// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --allow-natives-syntax

function opt(r, flag){
  var x;
  for(let i = 0; i < 2; i++){
    r[2] = 0;
    x = r[0] << (flag ? r[0] : flag)
  }
  return x;
}

ar = [3.1];
%PrepareFunctionForOptimization(opt);
opt(ar,1);
opt(ar,1);
%OptimizeFunctionOnNextCall(opt);
assertEquals(24, opt(ar,1));