Files
sdk/tests/language_2/vm/regression_38147_test.dart
T
Aart Bik d9a9346c3f [vm/compiler] Fix truncating logic
Rationale:
The representation mask should not be used to
do the truncation, which is more subtle around
the sign bit. With regression test.

https://github.com/dart-lang/sdk/issues/38147

Change-Id: I9745f6d73f4761eb6210e0b60b2b0504994f5cbf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/115607
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Aart Bik <ajcbik@google.com>
2019-09-05 21:13:43 +00:00

28 lines
641 B
Dart
Executable File

// Copyright (c) 2019, 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=--deterministic --optimization_counter_threshold=10
import "package:expect/expect.dart";
import 'dart:typed_data';
// Found by DartFuzzing: truncating shift
// https://github.com/dart-lang/sdk/issues/38147
int bar(int x, int y) {
return (x << y) & 0xffff;
}
@pragma("vm:never-inline")
int foo() {
return bar(-61, 12);
}
main() {
for (int i = 0; i < 20; i++) {
Expect.equals(12288, foo());
}
}