diff options
| author | 2022-12-06 14:10:47 +0000 | |
|---|---|---|
| committer | 2022-12-06 14:10:47 +0000 | |
| commit | cd9aa7ecaaf63e6ae67d2426e284c3314c9fe470 (patch) | |
| tree | f1342d4ad7559a1bcc07e638be771de49560bb23 /compiler/optimizing/nodes.cc | |
| parent | 53ac62dbe2a103d359af33e324f68c3319ad4abc (diff) | |
| parent | 31242a99a1b58ce5267c1a74ad96a9d0b6dc1a94 (diff) | |
Update domination chain and RPO manually in MaybeAddExtraGotoBlocks am: 31242a99a1
Original change: https://android-review.googlesource.com/c/platform/art/+/2327718
Change-Id: Ia93373a62cf9d70babc305fed2cdae0eb98590ea
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'compiler/optimizing/nodes.cc')
| -rw-r--r-- | compiler/optimizing/nodes.cc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc index 841576a5e5..4a0ec93663 100644 --- a/compiler/optimizing/nodes.cc +++ b/compiler/optimizing/nodes.cc @@ -569,6 +569,15 @@ void HGraph::SplitCriticalEdge(HBasicBlock* block, HBasicBlock* successor) { } } +HBasicBlock* HGraph::SplitEdgeAndUpdateRPO(HBasicBlock* block, HBasicBlock* successor) { + HBasicBlock* new_block = SplitEdge(block, successor); + // In the RPO we have {... , block, ... , successor}. We want to insert `new_block` right after + // `block` to have a consistent RPO without recomputing the whole graph's RPO. + reverse_post_order_.insert( + reverse_post_order_.begin() + IndexOfElement(reverse_post_order_, block) + 1, new_block); + return new_block; +} + // Reorder phi inputs to match reordering of the block's predecessors. static void FixPhisAfterPredecessorsReodering(HBasicBlock* block, size_t first, size_t second) { for (HInstructionIterator it(block->GetPhis()); !it.Done(); it.Advance()) { |