Index: tests/standalone/regress_25335_test.dart |
diff --git a/tests/standalone/regress_25335_test.dart b/tests/standalone/regress_25335_test.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e4551a25af3df738c50bcefcbd07cba8b08b38eb |
--- /dev/null |
+++ b/tests/standalone/regress_25335_test.dart |
@@ -0,0 +1,33 @@ |
+// Copyright (c) 2016, 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. |
+// |
+// Test that canonicalization inserts constants with correct representation. |
+// VMOptions=--optimization-counter-threshold=10 --optimization-filter=bar |
+ |
+import 'dart:typed_data'; |
+ |
+toSigned(v, width) { |
+ var signMask = 1 << (width - 1); |
+ return (v & (signMask - 1)) - (v & signMask); |
+} |
+ |
+foo(value) { |
+ return value >> 32; |
+} |
+ |
+bar(td) { |
+ return toSigned(foo(td[0]), 64); |
+} |
+ |
+main() { |
+ toSigned(1 << 1, 32); |
+ toSigned(1 << 32, 32); |
+ |
+ var l = new Int64List(1); |
+ l[0] = 0xf8f7f6f5f4f3f2f1; |
+ |
+ for (var i = 0; i < 20; i++) { |
+ bar(l); |
+ } |
+} |