diff options
author | 2023-02-10 10:25:31 +0000 | |
---|---|---|
committer | 2023-02-13 18:35:10 +0000 | |
commit | 2c50b3a4f31cb9e845f80299e684cd9937b61e24 (patch) | |
tree | 42033e2f48b6c6656f062daec1aefffa8cad92e0 /compiler/optimizing | |
parent | c5cfbde3674a04828b25e7511c38ee830f9c0568 (diff) |
Don't run ReferenceTypePropagation without a Thread
Update some of our gtests to create a Runtime, as
ReferenceTypePropagation expects to have one.
Test: run gtests
Change-Id: I75986b1a9dc0227ee05f507f2b03ffa8aa8f8e58
Diffstat (limited to 'compiler/optimizing')
-rw-r--r-- | compiler/optimizing/codegen_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/constant_folding_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/dead_code_elimination_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/dominator_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/find_loops_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/graph_checker_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/linearize_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/live_ranges_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/liveness_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/pretty_printer_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/reference_type_propagation.cc | 7 | ||||
-rw-r--r-- | compiler/optimizing/register_allocator_test.cc | 4 | ||||
-rw-r--r-- | compiler/optimizing/scheduler_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/ssa_test.cc | 2 | ||||
-rw-r--r-- | compiler/optimizing/suspend_check_test.cc | 2 |
15 files changed, 20 insertions, 17 deletions
diff --git a/compiler/optimizing/codegen_test.cc b/compiler/optimizing/codegen_test.cc index 9f1f62b203..2d9acc49b3 100644 --- a/compiler/optimizing/codegen_test.cc +++ b/compiler/optimizing/codegen_test.cc @@ -64,7 +64,7 @@ static ::std::vector<CodegenTargetConfig> GetTargetConfigs() { return v; } -class CodegenTest : public OptimizingUnitTest { +class CodegenTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: void TestCode(const std::vector<uint16_t>& data, bool has_result = false, int32_t expected = 0); void TestCodeLong(const std::vector<uint16_t>& data, bool has_result, int64_t expected); diff --git a/compiler/optimizing/constant_folding_test.cc b/compiler/optimizing/constant_folding_test.cc index 7c3dae21d8..9acfa35326 100644 --- a/compiler/optimizing/constant_folding_test.cc +++ b/compiler/optimizing/constant_folding_test.cc @@ -32,7 +32,7 @@ namespace art HIDDEN { /** * Fixture class for the constant folding and dce tests. */ -class ConstantFoldingTest : public OptimizingUnitTest { +class ConstantFoldingTest : public CommonCompilerTest, public OptimizingUnitTestHelper { public: ConstantFoldingTest() : graph_(nullptr) { } diff --git a/compiler/optimizing/dead_code_elimination_test.cc b/compiler/optimizing/dead_code_elimination_test.cc index fcf4ca39f2..b789434add 100644 --- a/compiler/optimizing/dead_code_elimination_test.cc +++ b/compiler/optimizing/dead_code_elimination_test.cc @@ -26,7 +26,7 @@ namespace art HIDDEN { -class DeadCodeEliminationTest : public OptimizingUnitTest { +class DeadCodeEliminationTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: void TestCode(const std::vector<uint16_t>& data, const std::string& expected_before, diff --git a/compiler/optimizing/dominator_test.cc b/compiler/optimizing/dominator_test.cc index d3b8cb1cf8..5f366ebcd9 100644 --- a/compiler/optimizing/dominator_test.cc +++ b/compiler/optimizing/dominator_test.cc @@ -25,7 +25,7 @@ namespace art HIDDEN { -class OptimizerTest : public OptimizingUnitTest { +class OptimizerTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: void TestCode(const std::vector<uint16_t>& data, const uint32_t* blocks, size_t blocks_length); }; diff --git a/compiler/optimizing/find_loops_test.cc b/compiler/optimizing/find_loops_test.cc index 8d8c3a1838..8857b2a775 100644 --- a/compiler/optimizing/find_loops_test.cc +++ b/compiler/optimizing/find_loops_test.cc @@ -28,7 +28,7 @@ namespace art HIDDEN { -class FindLoopsTest : public OptimizingUnitTest {}; +class FindLoopsTest : public CommonCompilerTest, public OptimizingUnitTestHelper {}; TEST_F(FindLoopsTest, CFG1) { // Constant is not used. diff --git a/compiler/optimizing/graph_checker_test.cc b/compiler/optimizing/graph_checker_test.cc index 9a2fc890f5..b256fbb46d 100644 --- a/compiler/optimizing/graph_checker_test.cc +++ b/compiler/optimizing/graph_checker_test.cc @@ -20,7 +20,7 @@ namespace art HIDDEN { -class GraphCheckerTest : public OptimizingUnitTest { +class GraphCheckerTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: HGraph* CreateSimpleCFG(); void TestCode(const std::vector<uint16_t>& data); diff --git a/compiler/optimizing/linearize_test.cc b/compiler/optimizing/linearize_test.cc index b39bac5acf..01daa23511 100644 --- a/compiler/optimizing/linearize_test.cc +++ b/compiler/optimizing/linearize_test.cc @@ -31,7 +31,7 @@ namespace art HIDDEN { -class LinearizeTest : public OptimizingUnitTest { +class LinearizeTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: template <size_t number_of_blocks> void TestCode(const std::vector<uint16_t>& data, diff --git a/compiler/optimizing/live_ranges_test.cc b/compiler/optimizing/live_ranges_test.cc index 4f52fdb7f3..fb1a23eef4 100644 --- a/compiler/optimizing/live_ranges_test.cc +++ b/compiler/optimizing/live_ranges_test.cc @@ -28,7 +28,7 @@ namespace art HIDDEN { -class LiveRangesTest : public OptimizingUnitTest { +class LiveRangesTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: HGraph* BuildGraph(const std::vector<uint16_t>& data); diff --git a/compiler/optimizing/liveness_test.cc b/compiler/optimizing/liveness_test.cc index a2763731b4..0b421cf9e6 100644 --- a/compiler/optimizing/liveness_test.cc +++ b/compiler/optimizing/liveness_test.cc @@ -28,7 +28,7 @@ namespace art HIDDEN { -class LivenessTest : public OptimizingUnitTest { +class LivenessTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: void TestCode(const std::vector<uint16_t>& data, const char* expected); }; diff --git a/compiler/optimizing/pretty_printer_test.cc b/compiler/optimizing/pretty_printer_test.cc index 5ed39442bf..90d5f8f08f 100644 --- a/compiler/optimizing/pretty_printer_test.cc +++ b/compiler/optimizing/pretty_printer_test.cc @@ -28,7 +28,7 @@ namespace art HIDDEN { -class PrettyPrinterTest : public OptimizingUnitTest { +class PrettyPrinterTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: void TestCode(const std::vector<uint16_t>& data, const char* expected); }; diff --git a/compiler/optimizing/reference_type_propagation.cc b/compiler/optimizing/reference_type_propagation.cc index 2b0a118e32..48d33f2b8c 100644 --- a/compiler/optimizing/reference_type_propagation.cc +++ b/compiler/optimizing/reference_type_propagation.cc @@ -123,8 +123,8 @@ ReferenceTypePropagation::ReferenceTypePropagation(HGraph* graph, : HOptimization(graph, name), hint_dex_cache_(hint_dex_cache), is_first_run_(is_first_run) {} void ReferenceTypePropagation::ValidateTypes() { - // TODO: move this to the graph checker. Note: There may be no Thread for gtests. - if (kIsDebugBuild && Thread::Current() != nullptr) { + // TODO: move this to the graph checker. + if (kIsDebugBuild) { ScopedObjectAccess soa(Thread::Current()); for (HBasicBlock* block : graph_->GetReversePostOrder()) { for (HInstructionIterator iti(block->GetInstructions()); !iti.Done(); iti.Advance()) { @@ -333,6 +333,9 @@ static void BoundTypeForClassCheck(HInstruction* check) { } bool ReferenceTypePropagation::Run() { + DCHECK(Thread::Current() != nullptr) + << "ReferenceTypePropagation requires the use of Thread::Current(). Make sure you have a " + << "Runtime initialized before calling this optimization pass"; RTPVisitor visitor(graph_, hint_dex_cache_, is_first_run_); // To properly propagate type info we need to visit in the dominator-based order. diff --git a/compiler/optimizing/register_allocator_test.cc b/compiler/optimizing/register_allocator_test.cc index dabd4a3ca1..d316aa5dc2 100644 --- a/compiler/optimizing/register_allocator_test.cc +++ b/compiler/optimizing/register_allocator_test.cc @@ -39,10 +39,10 @@ using Strategy = RegisterAllocator::Strategy; // Note: the register allocator tests rely on the fact that constants have live // intervals and registers get allocated to them. -class RegisterAllocatorTest : public OptimizingUnitTest { +class RegisterAllocatorTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: void SetUp() override { - OptimizingUnitTest::SetUp(); + CommonCompilerTest::SetUp(); // This test is using the x86 ISA. compiler_options_ = CommonCompilerTest::CreateCompilerOptions(InstructionSet::kX86, "default"); } diff --git a/compiler/optimizing/scheduler_test.cc b/compiler/optimizing/scheduler_test.cc index 6eea87f8a2..165bfe3d94 100644 --- a/compiler/optimizing/scheduler_test.cc +++ b/compiler/optimizing/scheduler_test.cc @@ -66,7 +66,7 @@ static ::std::vector<CodegenTargetConfig> GetTargetConfigs() { return v; } -class SchedulerTest : public OptimizingUnitTest { +class SchedulerTest : public CommonCompilerTest, public OptimizingUnitTestHelper { public: SchedulerTest() : graph_(CreateGraph()) { } diff --git a/compiler/optimizing/ssa_test.cc b/compiler/optimizing/ssa_test.cc index 008e435a77..980493db34 100644 --- a/compiler/optimizing/ssa_test.cc +++ b/compiler/optimizing/ssa_test.cc @@ -30,7 +30,7 @@ namespace art HIDDEN { -class SsaTest : public OptimizingUnitTest { +class SsaTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: void TestCode(const std::vector<uint16_t>& data, const char* expected); }; diff --git a/compiler/optimizing/suspend_check_test.cc b/compiler/optimizing/suspend_check_test.cc index 93a84b4e0a..76e7e0c32c 100644 --- a/compiler/optimizing/suspend_check_test.cc +++ b/compiler/optimizing/suspend_check_test.cc @@ -29,7 +29,7 @@ namespace art HIDDEN { * Check that the HGraphBuilder adds suspend checks to backward branches. */ -class SuspendCheckTest : public OptimizingUnitTest { +class SuspendCheckTest : public CommonCompilerTest, public OptimizingUnitTestHelper { protected: void TestCode(const std::vector<uint16_t>& data); }; |