| 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++) { | 
|  |