// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// VMOptions=--optimization-counter-threshold=10 --no-background-compilation

// @dart = 2.9

// Test that the compiler's load elimination phase sees interfering writes to
// the array's buffer.

import "dart:typed_data";
import 'package:expect/expect.dart';

void testStoreLoad(l, z) {
  l[0] = 9223372036854775807;
  l[1] = 9223372036854775806;
  l[2] = l[0];
  l[3] = z;
  Expect.equals(l[0], 9223372036854775807);
  Expect.equals(l[1], 9223372036854775806);
  Expect.isTrue(l[1] < l[0]);
  Expect.equals(l[2], l[0]);
  Expect.equals(l[3], z);
}

main() {
  var l = new Int64List(4);
  var zGood = 9223372036854775807;
  var zBad = false;
  for (var i = 0; i < 40; i++) {
    testStoreLoad(l, zGood);
  }
  // Deopt.
  try {
    testStoreLoad(l, zBad);
  } catch (_) {}
  for (var i = 0; i < 40; i++) {
    testStoreLoad(l, zGood);
  }
}
