diff options
author | 2022-12-16 19:28:47 +0000 | |
---|---|---|
committer | 2023-01-13 16:19:02 +0000 | |
commit | 74da668328e1c501742a864d23ba8c114ece5e64 (patch) | |
tree | a8e6d643230ff9bec8ae8878cd8d1021b813a3e5 /compiler/optimizing/nodes.cc | |
parent | 1f3861de4cacb51eacbb624e377b9dc7d7f96cc1 (diff) |
Update the graph flags and check consistency
Check that the flags are up to date in graph checker. Mainly a
correctness check CL but it brings slight code size reduction
(e.g. not needing vreg info if HasMonitorOperations is false).
Update loop_optimization_test to stop using `LocalRun` directly
as it meant that it was breaking assumptions (i.e. top_loop_ was
nullptr when it was expected to have a value).
Bug: 264278131
Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b
Change-Id: I29765b3be46d4bd7c91ea9c80f7565a3c88fae2e
Diffstat (limited to 'compiler/optimizing/nodes.cc')
-rw-r--r-- | compiler/optimizing/nodes.cc | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc index 0e85838862..0876ce070e 100644 --- a/compiler/optimizing/nodes.cc +++ b/compiler/optimizing/nodes.cc @@ -262,6 +262,7 @@ void HGraph::ClearDominanceInformation() { } void HGraph::ClearLoopInformation() { + SetHasLoops(false); SetHasIrreducibleLoops(false); for (HBasicBlock* block : GetActiveBlocks()) { block->SetLoopInformation(nullptr); @@ -742,6 +743,8 @@ void HGraph::SimplifyLoop(HBasicBlock* header) { void HGraph::ComputeTryBlockInformation() { // Iterate in reverse post order to propagate try membership information from // predecessors to their successors. + bool graph_has_try_catch = false; + for (HBasicBlock* block : GetReversePostOrder()) { if (block->IsEntryBlock() || block->IsCatchBlock()) { // Catch blocks after simplification have only exceptional predecessors @@ -756,6 +759,7 @@ void HGraph::ComputeTryBlockInformation() { DCHECK_IMPLIES(block->IsLoopHeader(), !block->GetLoopInformation()->IsBackEdge(*first_predecessor)); const HTryBoundary* try_entry = first_predecessor->ComputeTryEntryOfSuccessors(); + graph_has_try_catch |= try_entry != nullptr; if (try_entry != nullptr && (block->GetTryCatchInformation() == nullptr || try_entry != &block->GetTryCatchInformation()->GetTryEntry())) { @@ -764,6 +768,8 @@ void HGraph::ComputeTryBlockInformation() { block->SetTryCatchInformation(new (allocator_) TryCatchInformation(*try_entry)); } } + + SetHasTryCatch(graph_has_try_catch); } void HGraph::SimplifyCFG() { |