| Index: tests/language/vm/load_to_load_forwarding_vm_test.dart
 | 
| diff --git a/tests/language/vm/load_to_load_forwarding_vm_test.dart b/tests/language/vm/load_to_load_forwarding_vm_test.dart
 | 
| index 5926305c36f8c7f76ddb37fcaba08d85e3d3fbf0..86c5de7771be51d267fd1ee3569a8f81470b9d64 100644
 | 
| --- a/tests/language/vm/load_to_load_forwarding_vm_test.dart
 | 
| +++ b/tests/language/vm/load_to_load_forwarding_vm_test.dart
 | 
| @@ -240,49 +240,217 @@ testIndexedNoAlias(a) {
 | 
|    return a[0] + a[1];
 | 
|  }
 | 
|  
 | 
| -testIndexedAliasedStore(a, b) {
 | 
| -  a[0] = 1;
 | 
| -  a[1] = 2;
 | 
| -  if (a == b) {
 | 
| -    b[0] = 3;
 | 
| -  }
 | 
| -  return a[0] + a[1];
 | 
| +//
 | 
| +// Tests for indexed store aliases were autogenerated to have extensive
 | 
| +// coverage for all interesting aliasing combinations within the alias
 | 
| +// lattice (*[*], *[C], X[*], X[C])
 | 
| +//
 | 
| +
 | 
| +testIndexedAliasedStore1(i) {
 | 
| +  var a = new List(2);
 | 
| +  a[0] = 1;  // X[C]
 | 
| +  a[i] = 2;  // X[*]
 | 
| +  return a[0];
 | 
|  }
 | 
|  
 | 
| -testIndexedAliasedStore1(a, b) {
 | 
| -  a[0] = 1;
 | 
| -  a[1] = 2;
 | 
| -  if (a == b) {
 | 
| -    b[0] = 3;
 | 
| -  }
 | 
| -  return a[0] + a[1];
 | 
| +testIndexedAliasedStore2(f, c) {
 | 
| +  var a = new List(2);
 | 
| +  var d = f ? a : c;
 | 
| +  a[0] = 1;  // X[C]
 | 
| +  d[0] = 2;  // *[C]
 | 
| +  return a[0];
 | 
|  }
 | 
|  
 | 
| -testIndexedAliasedStore2(a, b, i) {
 | 
| -  a[0] = 1;
 | 
| -  a[1] = 2;
 | 
| -  if (a == b) {
 | 
| -    b[i] = 3;
 | 
| -  }
 | 
| -  return a[0] + a[1];
 | 
| +testIndexedAliasedStore3(f, c, i) {
 | 
| +  var a = new List(2);
 | 
| +  var d = f ? a : c;
 | 
| +  a[0] = 1;  // X[C]
 | 
| +  d[i] = 2;  // *[*]
 | 
| +  return a[0];
 | 
|  }
 | 
|  
 | 
| +testIndexedAliasedStore4(i) {
 | 
| +  var a = new List(2);
 | 
| +  a[i] = 1;  // X[*]
 | 
| +  a[0] = 2;  // X[C]
 | 
| +  return a[i];
 | 
| +}
 | 
|  
 | 
| -testIndexedAliasedStore3(i) {
 | 
| +testIndexedAliasedStore5(i, j) {
 | 
|    var a = new List(2);
 | 
| -  a[0] = 1;
 | 
| -  a[i] = 3;
 | 
| -  return a[0];
 | 
| +  a[i] = 1;  // X[*]
 | 
| +  a[j] = 2;  // X[*]
 | 
| +  return a[i];
 | 
|  }
 | 
|  
 | 
| +testIndexedAliasedStore6(i, f, c) {
 | 
| +  var a = new List(2);
 | 
| +  var d = f ? a : c;
 | 
| +  a[i] = 1;  // X[*]
 | 
| +  d[0] = 2;  // *[C]
 | 
| +  return a[i];
 | 
| +}
 | 
|  
 | 
| -testIndexedAliasedStore4(b) {
 | 
| +testIndexedAliasedStore7(i, f, c) {
 | 
|    var a = new List(2);
 | 
| -  a[0] = 1;
 | 
| -  b[0] = 3;
 | 
| -  return a[0];
 | 
| +  var d = f ? a : c;
 | 
| +  a[i] = 1;  // X[*]
 | 
| +  d[i] = 2;  // *[*]
 | 
| +  return a[i];
 | 
| +}
 | 
| +
 | 
| +testIndexedAliasedStore8(c, i) {
 | 
| +  c[0] = 1;  // *[C]
 | 
| +  c[i] = 2;  // *[*]
 | 
| +  return c[0];
 | 
| +}
 | 
| +
 | 
| +testIndexedAliasedStore9(c, f) {
 | 
| +  var a = new List(2);
 | 
| +  var d = f ? a : c;
 | 
| +  c[0] = 1;  // *[C]
 | 
| +  d[0] = 2;  // *[C]
 | 
| +  return c[0];
 | 
| +}
 | 
| +
 | 
| +testIndexedAliasedStore10(c, i) {
 | 
| +  c[i] = 1;  // *[*]
 | 
| +  c[0] = 2;  // *[C]
 | 
| +  return c[i];
 | 
|  }
 | 
|  
 | 
| +testIndexedAliasedStore11(c, i, j) {
 | 
| +  c[i] = 1;  // *[*]
 | 
| +  c[j] = 2;  // *[*]
 | 
| +  return c[i];
 | 
| +}
 | 
| +
 | 
| +testIndexedAliasedStore12(f, c) {
 | 
| +  var a = new List(2);
 | 
| +  var d = f ? a : c;
 | 
| +  d[0] = 1;  // *[C]
 | 
| +  a[0] = 2;  // X[C]
 | 
| +  return d[0];
 | 
| +}
 | 
| +
 | 
| +testIndexedAliasedStore13(f, c, i) {
 | 
| +  var a = new List(2);
 | 
| +  var d = f ? a : c;
 | 
| +  d[0] = 1;  // *[C]
 | 
| +  a[i] = 2;  // X[*]
 | 
| +  return d[0];
 | 
| +}
 | 
| +
 | 
| +testIndexedAliasedStore14(f, c, i) {
 | 
| +  var a = new List(2);
 | 
| +  var d = f ? a : c;
 | 
| +  d[i] = 1;  // *[*]
 | 
| +  a[0] = 2;  // X[C]
 | 
| +  return d[i];
 | 
| +}
 | 
| +
 | 
| +testIndexedAliasedStore15(f, c, i) {
 | 
| +  var a = new List(2);
 | 
| +  var d = f ? a : c;
 | 
| +  d[i] = 1;  // *[*]
 | 
| +  a[i] = 2;  // X[*]
 | 
| +  return d[i];
 | 
| +}
 | 
| +
 | 
| +testIndexedAliasedStores() {
 | 
| +  var arr = new List(2);
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(2, testIndexedAliasedStore1(0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore1(1));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(1, testIndexedAliasedStore2(false, arr));
 | 
| +    Expect.equals(2, testIndexedAliasedStore2(true, arr));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(1, testIndexedAliasedStore3(false, arr, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore3(false, arr, 1));
 | 
| +    Expect.equals(2, testIndexedAliasedStore3(true, arr, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore3(true, arr, 1));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(2, testIndexedAliasedStore4(0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore4(1));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(2, testIndexedAliasedStore5(0, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore5(0, 1));
 | 
| +    Expect.equals(1, testIndexedAliasedStore5(1, 0));
 | 
| +    Expect.equals(2, testIndexedAliasedStore5(1, 1));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(1, testIndexedAliasedStore6(0, false, arr));
 | 
| +    Expect.equals(2, testIndexedAliasedStore6(0, true, arr));
 | 
| +    Expect.equals(1, testIndexedAliasedStore6(1, false, arr));
 | 
| +    Expect.equals(1, testIndexedAliasedStore6(1, true, arr));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(1, testIndexedAliasedStore7(0, false, arr));
 | 
| +    Expect.equals(2, testIndexedAliasedStore7(0, true, arr));
 | 
| +    Expect.equals(1, testIndexedAliasedStore7(1, false, arr));
 | 
| +    Expect.equals(2, testIndexedAliasedStore7(1, true, arr));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(2, testIndexedAliasedStore8(arr, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore8(arr, 1));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(2, testIndexedAliasedStore9(arr, false));
 | 
| +    Expect.equals(1, testIndexedAliasedStore9(arr, true));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(2, testIndexedAliasedStore10(arr, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore10(arr, 1));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(2, testIndexedAliasedStore11(arr, 0, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore11(arr, 0, 1));
 | 
| +    Expect.equals(1, testIndexedAliasedStore11(arr, 1, 0));
 | 
| +    Expect.equals(2, testIndexedAliasedStore11(arr, 1, 1));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(1, testIndexedAliasedStore12(false, arr));
 | 
| +    Expect.equals(2, testIndexedAliasedStore12(true, arr));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(1, testIndexedAliasedStore13(false, arr, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore13(false, arr, 1));
 | 
| +    Expect.equals(2, testIndexedAliasedStore13(true, arr, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore13(true, arr, 1));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(1, testIndexedAliasedStore14(false, arr, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore14(false, arr, 1));
 | 
| +    Expect.equals(2, testIndexedAliasedStore14(true, arr, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore14(true, arr, 1));
 | 
| +  }
 | 
| +
 | 
| +  for (var i = 0; i < 50; i++) {
 | 
| +    Expect.equals(1, testIndexedAliasedStore15(false, arr, 0));
 | 
| +    Expect.equals(1, testIndexedAliasedStore15(false, arr, 1));
 | 
| +    Expect.equals(2, testIndexedAliasedStore15(true, arr, 0));
 | 
| +    Expect.equals(2, testIndexedAliasedStore15(true, arr, 1));
 | 
| +  }
 | 
| +}
 | 
|  
 | 
|  var indices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
 | 
|  
 | 
| @@ -316,7 +484,7 @@ main() {
 | 
|  
 | 
|    final obj = new X(new X(new X(null)));
 | 
|  
 | 
| -  final cs = new C(0, new C(1, new C(2, null))); 
 | 
| +  final cs = new C(0, new C(1, new C(2, null)));
 | 
|  
 | 
|    for (var i = 0; i < 20; i++) {
 | 
|      Expect.listEquals([0x02010000, 0x03020100], foo(new A(0, 0)));
 | 
| @@ -361,22 +529,8 @@ main() {
 | 
|    for (var i = 0; i < 20; i++) {
 | 
|      Expect.equals(3, testIndexedNoAlias(array));
 | 
|    }
 | 
| -  for (var i = 0; i < 20; i++) {
 | 
| -    Expect.equals(5, testIndexedAliasedStore1(array, array));
 | 
| -  }
 | 
| -  for (var i = 0; i < 20; i++) {
 | 
| -    Expect.equals(4, testIndexedAliasedStore2(array, array, indices[1]));
 | 
| -  }
 | 
| -  for (var i = 0; i < 20; i++) {
 | 
| -    Expect.equals(3, testIndexedAliasedStore3(indices[0]));
 | 
| -  }
 | 
| -  for (var i = 0; i < 20; i++) {
 | 
| -    Expect.equals(1, testIndexedAliasedStore3(indices[1]));
 | 
| -  }
 | 
|  
 | 
| -  for (var i = 0; i < 20; i++) {
 | 
| -    Expect.equals(1, testIndexedAliasedStore4(array));
 | 
| -  }
 | 
| +  testIndexedAliasedStores();
 | 
|  
 | 
|    var test_array = new List(1);
 | 
|    for (var i = 0; i < 20; i++) {
 | 
| 
 |