diff options
| -rw-r--r-- | compiler/dex/local_value_numbering_test.cc | 40 | ||||
| -rw-r--r-- | compiler/optimizing/constant_folding_test.cc | 2 | ||||
| -rw-r--r-- | compiler/optimizing/dead_code_elimination_test.cc | 2 | ||||
| -rw-r--r-- | runtime/leb128_test.cc | 2 | ||||
| -rw-r--r-- | runtime/reflection_test.cc | 3 |
5 files changed, 27 insertions, 22 deletions
diff --git a/compiler/dex/local_value_numbering_test.cc b/compiler/dex/local_value_numbering_test.cc index bd00690270..f98969effd 100644 --- a/compiler/dex/local_value_numbering_test.cc +++ b/compiler/dex/local_value_numbering_test.cc @@ -797,6 +797,10 @@ TEST_F(LocalValueNumberingTest, DivZeroCheck) { } } +static constexpr int64_t shift_minus_1(size_t by) { + return static_cast<int64_t>(static_cast<uint64_t>(INT64_C(-1)) << by); +} + TEST_F(LocalValueNumberingTest, ConstWide) { static const MIRDef mirs[] = { // Core reg constants. @@ -804,45 +808,45 @@ TEST_F(LocalValueNumberingTest, ConstWide) { DEF_CONST(Instruction::CONST_WIDE_16, 2u, 1), DEF_CONST(Instruction::CONST_WIDE_16, 4u, -1), DEF_CONST(Instruction::CONST_WIDE_32, 6u, 1 << 16), - DEF_CONST(Instruction::CONST_WIDE_32, 8u, -1 << 16), + DEF_CONST(Instruction::CONST_WIDE_32, 8u, shift_minus_1(16)), DEF_CONST(Instruction::CONST_WIDE_32, 10u, (1 << 16) + 1), DEF_CONST(Instruction::CONST_WIDE_32, 12u, (1 << 16) - 1), DEF_CONST(Instruction::CONST_WIDE_32, 14u, -(1 << 16) + 1), DEF_CONST(Instruction::CONST_WIDE_32, 16u, -(1 << 16) - 1), DEF_CONST(Instruction::CONST_WIDE, 18u, INT64_C(1) << 32), - DEF_CONST(Instruction::CONST_WIDE, 20u, INT64_C(-1) << 32), + DEF_CONST(Instruction::CONST_WIDE, 20u, shift_minus_1(32)), DEF_CONST(Instruction::CONST_WIDE, 22u, (INT64_C(1) << 32) + 1), DEF_CONST(Instruction::CONST_WIDE, 24u, (INT64_C(1) << 32) - 1), - DEF_CONST(Instruction::CONST_WIDE, 26u, (INT64_C(-1) << 32) + 1), - DEF_CONST(Instruction::CONST_WIDE, 28u, (INT64_C(-1) << 32) - 1), + DEF_CONST(Instruction::CONST_WIDE, 26u, shift_minus_1(32) + 1), + DEF_CONST(Instruction::CONST_WIDE, 28u, shift_minus_1(32) - 1), DEF_CONST(Instruction::CONST_WIDE_HIGH16, 30u, 1), // Effectively 1 << 48. DEF_CONST(Instruction::CONST_WIDE_HIGH16, 32u, 0xffff), // Effectively -1 << 48. DEF_CONST(Instruction::CONST_WIDE, 34u, (INT64_C(1) << 48) + 1), DEF_CONST(Instruction::CONST_WIDE, 36u, (INT64_C(1) << 48) - 1), - DEF_CONST(Instruction::CONST_WIDE, 38u, (INT64_C(-1) << 48) + 1), - DEF_CONST(Instruction::CONST_WIDE, 40u, (INT64_C(-1) << 48) - 1), + DEF_CONST(Instruction::CONST_WIDE, 38u, shift_minus_1(48) + 1), + DEF_CONST(Instruction::CONST_WIDE, 40u, shift_minus_1(48) - 1), // FP reg constants. DEF_CONST(Instruction::CONST_WIDE_16, 42u, 0), DEF_CONST(Instruction::CONST_WIDE_16, 44u, 1), DEF_CONST(Instruction::CONST_WIDE_16, 46u, -1), DEF_CONST(Instruction::CONST_WIDE_32, 48u, 1 << 16), - DEF_CONST(Instruction::CONST_WIDE_32, 50u, -1 << 16), + DEF_CONST(Instruction::CONST_WIDE_32, 50u, shift_minus_1(16)), DEF_CONST(Instruction::CONST_WIDE_32, 52u, (1 << 16) + 1), DEF_CONST(Instruction::CONST_WIDE_32, 54u, (1 << 16) - 1), DEF_CONST(Instruction::CONST_WIDE_32, 56u, -(1 << 16) + 1), DEF_CONST(Instruction::CONST_WIDE_32, 58u, -(1 << 16) - 1), DEF_CONST(Instruction::CONST_WIDE, 60u, INT64_C(1) << 32), - DEF_CONST(Instruction::CONST_WIDE, 62u, INT64_C(-1) << 32), + DEF_CONST(Instruction::CONST_WIDE, 62u, shift_minus_1(32)), DEF_CONST(Instruction::CONST_WIDE, 64u, (INT64_C(1) << 32) + 1), DEF_CONST(Instruction::CONST_WIDE, 66u, (INT64_C(1) << 32) - 1), - DEF_CONST(Instruction::CONST_WIDE, 68u, (INT64_C(-1) << 32) + 1), - DEF_CONST(Instruction::CONST_WIDE, 70u, (INT64_C(-1) << 32) - 1), + DEF_CONST(Instruction::CONST_WIDE, 68u, shift_minus_1(32) + 1), + DEF_CONST(Instruction::CONST_WIDE, 70u, shift_minus_1(32) - 1), DEF_CONST(Instruction::CONST_WIDE_HIGH16, 72u, 1), // Effectively 1 << 48. DEF_CONST(Instruction::CONST_WIDE_HIGH16, 74u, 0xffff), // Effectively -1 << 48. DEF_CONST(Instruction::CONST_WIDE, 76u, (INT64_C(1) << 48) + 1), DEF_CONST(Instruction::CONST_WIDE, 78u, (INT64_C(1) << 48) - 1), - DEF_CONST(Instruction::CONST_WIDE, 80u, (INT64_C(-1) << 48) + 1), - DEF_CONST(Instruction::CONST_WIDE, 82u, (INT64_C(-1) << 48) - 1), + DEF_CONST(Instruction::CONST_WIDE, 80u, shift_minus_1(48) + 1), + DEF_CONST(Instruction::CONST_WIDE, 82u, shift_minus_1(48) - 1), }; PrepareMIRs(mirs); @@ -868,7 +872,7 @@ TEST_F(LocalValueNumberingTest, Const) { DEF_CONST(Instruction::CONST_4, 1u, 1), DEF_CONST(Instruction::CONST_4, 2u, -1), DEF_CONST(Instruction::CONST_16, 3u, 1 << 4), - DEF_CONST(Instruction::CONST_16, 4u, -1 << 4), + DEF_CONST(Instruction::CONST_16, 4u, shift_minus_1(4)), DEF_CONST(Instruction::CONST_16, 5u, (1 << 4) + 1), DEF_CONST(Instruction::CONST_16, 6u, (1 << 4) - 1), DEF_CONST(Instruction::CONST_16, 7u, -(1 << 4) + 1), @@ -877,14 +881,14 @@ TEST_F(LocalValueNumberingTest, Const) { DEF_CONST(Instruction::CONST_HIGH16, 10u, 0xffff), // Effectively -1 << 16. DEF_CONST(Instruction::CONST, 11u, (1 << 16) + 1), DEF_CONST(Instruction::CONST, 12u, (1 << 16) - 1), - DEF_CONST(Instruction::CONST, 13u, (-1 << 16) + 1), - DEF_CONST(Instruction::CONST, 14u, (-1 << 16) - 1), + DEF_CONST(Instruction::CONST, 13u, shift_minus_1(16) + 1), + DEF_CONST(Instruction::CONST, 14u, shift_minus_1(16) - 1), // FP reg constants. DEF_CONST(Instruction::CONST_4, 15u, 0), DEF_CONST(Instruction::CONST_4, 16u, 1), DEF_CONST(Instruction::CONST_4, 17u, -1), DEF_CONST(Instruction::CONST_16, 18u, 1 << 4), - DEF_CONST(Instruction::CONST_16, 19u, -1 << 4), + DEF_CONST(Instruction::CONST_16, 19u, shift_minus_1(4)), DEF_CONST(Instruction::CONST_16, 20u, (1 << 4) + 1), DEF_CONST(Instruction::CONST_16, 21u, (1 << 4) - 1), DEF_CONST(Instruction::CONST_16, 22u, -(1 << 4) + 1), @@ -893,8 +897,8 @@ TEST_F(LocalValueNumberingTest, Const) { DEF_CONST(Instruction::CONST_HIGH16, 25u, 0xffff), // Effectively -1 << 16. DEF_CONST(Instruction::CONST, 26u, (1 << 16) + 1), DEF_CONST(Instruction::CONST, 27u, (1 << 16) - 1), - DEF_CONST(Instruction::CONST, 28u, (-1 << 16) + 1), - DEF_CONST(Instruction::CONST, 29u, (-1 << 16) - 1), + DEF_CONST(Instruction::CONST, 28u, shift_minus_1(16) + 1), + DEF_CONST(Instruction::CONST, 29u, shift_minus_1(16) - 1), // null reference constant. DEF_CONST(Instruction::CONST_4, 30u, 0), }; diff --git a/compiler/optimizing/constant_folding_test.cc b/compiler/optimizing/constant_folding_test.cc index b2e222f1a9..2feb75cc9f 100644 --- a/compiler/optimizing/constant_folding_test.cc +++ b/compiler/optimizing/constant_folding_test.cc @@ -569,7 +569,7 @@ TEST(ConstantFolding, IntConstantFoldingAndJumps) { Instruction::ADD_INT_LIT16 | 1 << 8 | 0 << 12, 5, Instruction::GOTO | 4 << 8, Instruction::ADD_INT_LIT16 | 0 << 8 | 2 << 12, 4, - static_cast<uint16_t>(Instruction::GOTO | -5 << 8), + static_cast<uint16_t>(Instruction::GOTO | 0xFFFFFFFB << 8), Instruction::ADD_INT_LIT16 | 2 << 8 | 1 << 12, 8, Instruction::RETURN | 2 << 8); diff --git a/compiler/optimizing/dead_code_elimination_test.cc b/compiler/optimizing/dead_code_elimination_test.cc index cf0a4acd4a..2c6a1ef63d 100644 --- a/compiler/optimizing/dead_code_elimination_test.cc +++ b/compiler/optimizing/dead_code_elimination_test.cc @@ -140,7 +140,7 @@ TEST(DeadCodeElimination, AdditionsAndInconditionalJumps) { Instruction::ADD_INT_LIT16 | 1 << 8 | 0 << 12, 3, Instruction::GOTO | 4 << 8, Instruction::ADD_INT_LIT16 | 0 << 8 | 2 << 12, 2, - static_cast<uint16_t>(Instruction::GOTO | -5 << 8), + static_cast<uint16_t>(Instruction::GOTO | 0xFFFFFFFB << 8), Instruction::ADD_INT_LIT16 | 2 << 8 | 1 << 12, 4, Instruction::RETURN_VOID); diff --git a/runtime/leb128_test.cc b/runtime/leb128_test.cc index 09f7ecc5d6..122f55ebee 100644 --- a/runtime/leb128_test.cc +++ b/runtime/leb128_test.cc @@ -88,7 +88,7 @@ static DecodeSignedLeb128TestCase sleb128_tests[] = { {-0x08000000, {0x80, 0x80, 0x80, 0x40, 0}}, {-0x08000001, {0xFF, 0xFF, 0xFF, 0xBF, 0x7F}}, {-0x20000000, {0x80, 0x80, 0x80, 0x80, 0x7E}}, - {(-1) << 31, {0x80, 0x80, 0x80, 0x80, 0x78}}, + {static_cast<int32_t>(0x80000000), {0x80, 0x80, 0x80, 0x80, 0x78}}, }; TEST(Leb128Test, UnsignedSinglesVector) { diff --git a/runtime/reflection_test.cc b/runtime/reflection_test.cc index bd89be5d17..c7c270946b 100644 --- a/runtime/reflection_test.cc +++ b/runtime/reflection_test.cc @@ -157,7 +157,8 @@ class ReflectionTest : public CommonCompilerTest { result = InvokeWithJValues(soa, receiver_ref.get(), soa.EncodeMethod(method), args); EXPECT_EQ(SCHAR_MAX, result.GetB()); - args[0].b = (SCHAR_MIN << 24) >> 24; + static_assert(SCHAR_MIN == -128, "SCHAR_MIN unexpected"); + args[0].b = SCHAR_MIN; result = InvokeWithJValues(soa, receiver_ref.get(), soa.EncodeMethod(method), args); EXPECT_EQ(SCHAR_MIN, result.GetB()); } |