mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 15:09:04 +00:00
2034061433
Change-Id: I313a57ed7c7ea2ada75065f55a7367376f6bdae5 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/152183 Commit-Queue: Bob Nystrom <rnystrom@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com> Reviewed-by: Srujan Gaddam <srujzs@google.com>
153 lines
3.3 KiB
Dart
153 lines
3.3 KiB
Dart
// Copyright (c) 2013, 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 if-conversion pass in the optimizing compiler.
|
|
// VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
f1(i) => (i == 0) ? 0 : 1;
|
|
f2(i) => (i == 0) ? 2 : 3;
|
|
f3(i) => (i == null) ? 0 : 1;
|
|
f4(i) => (i == null) ? 2 : 3;
|
|
|
|
f5(i) => (i != 0) ? 0 : 1;
|
|
f6(i) => (i != 0) ? 2 : 3;
|
|
f7(i) => (i != null) ? 0 : 1;
|
|
f8(i) => (i != null) ? 2 : 3;
|
|
|
|
f9(i) => identical(i, 0) ? 0 : 1;
|
|
f10(i) => identical(i, 0) ? 2 : 3;
|
|
f11(i) => identical(i, null) ? 0 : 1;
|
|
f12(i) => identical(i, null) ? 2 : 3;
|
|
|
|
f13(i) => !identical(i, 0) ? 0 : 1;
|
|
f14(i) => !identical(i, 0) ? 2 : 3;
|
|
f15(i) => !identical(i, null) ? 0 : 1;
|
|
f16(i) => !identical(i, null) ? 2 : 3;
|
|
|
|
const POWER_OF_2 = 0x1000000000;
|
|
|
|
bigPower(i) => (i == 11) ? 0 : POWER_OF_2;
|
|
|
|
cse(i) {
|
|
final a = i == 0 ? 0 : 1;
|
|
final b = i == 0 ? 2 : 3;
|
|
return a + b;
|
|
}
|
|
|
|
f17(b) => b ? 0 : 11;
|
|
f18(b) => b ? 2 : 0;
|
|
|
|
f19(i) => i == 0 ? 0 : 0;
|
|
|
|
f20(i) => i > 0 ? 0 : 1;
|
|
f21(i) => i > 0 ? 2 : 3;
|
|
f22(i) => i & 1 == 0 ? 0 : 1;
|
|
f23(i) => i & 1 != 0 ? 1 : 0;
|
|
|
|
f24(i) => i >= 0 ? 0 : 1;
|
|
f25(i) => i < 0 ? 0 : 1;
|
|
f26(i) => i <= 0 ? 0 : 1;
|
|
|
|
main() {
|
|
for (var i = 0; i < 20; i++) {
|
|
f1(i);
|
|
f2(i);
|
|
f3(i);
|
|
f4(i);
|
|
f5(i);
|
|
f6(i);
|
|
f7(i);
|
|
f8(i);
|
|
f9(i);
|
|
f10(i);
|
|
f11(i);
|
|
f12(i);
|
|
f13(i);
|
|
f14(i);
|
|
f15(i);
|
|
f16(i);
|
|
cse(i);
|
|
bigPower(i);
|
|
f17(true);
|
|
f18(true);
|
|
f19(i);
|
|
f20(i);
|
|
f21(i);
|
|
f22(i);
|
|
f23(i);
|
|
f24(i);
|
|
f25(i);
|
|
f26(i);
|
|
}
|
|
|
|
Expect.equals(0, f1(0));
|
|
Expect.equals(1, f1(44));
|
|
Expect.equals(2, f2(0));
|
|
Expect.equals(3, f2(44));
|
|
Expect.equals(0, f3(null));
|
|
Expect.equals(1, f3(44));
|
|
Expect.equals(2, f4(null));
|
|
Expect.equals(3, f4(44));
|
|
|
|
Expect.equals(1, f5(0));
|
|
Expect.equals(0, f5(44));
|
|
Expect.equals(3, f6(0));
|
|
Expect.equals(2, f6(44));
|
|
Expect.equals(1, f7(null));
|
|
Expect.equals(0, f7(44));
|
|
Expect.equals(3, f8(null));
|
|
Expect.equals(2, f8(44));
|
|
|
|
Expect.equals(0, f9(0));
|
|
Expect.equals(1, f9(44));
|
|
Expect.equals(2, f10(0));
|
|
Expect.equals(3, f10(44));
|
|
Expect.equals(0, f11(null));
|
|
Expect.equals(1, f11(44));
|
|
Expect.equals(2, f12(null));
|
|
Expect.equals(3, f12(44));
|
|
|
|
Expect.equals(1, f13(0));
|
|
Expect.equals(0, f13(44));
|
|
Expect.equals(3, f14(0));
|
|
Expect.equals(2, f14(44));
|
|
Expect.equals(1, f15(null));
|
|
Expect.equals(0, f15(44));
|
|
Expect.equals(3, f16(null));
|
|
Expect.equals(2, f16(44));
|
|
|
|
Expect.equals(0, bigPower(11));
|
|
Expect.equals(POWER_OF_2, bigPower(12));
|
|
|
|
Expect.equals(2, cse(0));
|
|
Expect.equals(4, cse(1));
|
|
|
|
Expect.equals(11, f17(false));
|
|
Expect.equals(0, f17(true));
|
|
|
|
Expect.equals(0, f18(false));
|
|
Expect.equals(2, f18(true));
|
|
|
|
Expect.equals(0, f19(0));
|
|
Expect.equals(0, f19(1));
|
|
|
|
Expect.equals(0, f20(123));
|
|
Expect.equals(2, f21(123));
|
|
Expect.equals(0, f22(122));
|
|
Expect.equals(1, f22(123));
|
|
Expect.equals(0, f23(122));
|
|
Expect.equals(1, f23(123));
|
|
|
|
Expect.equals(0, f24(0));
|
|
Expect.equals(1, f24(-1));
|
|
|
|
Expect.equals(0, f25(-1));
|
|
Expect.equals(1, f25(0));
|
|
|
|
Expect.equals(0, f26(0));
|
|
Expect.equals(1, f26(1));
|
|
}
|