summaryrefslogtreecommitdiff
path: root/compiler/optimizing/superblock_cloner.h
diff options
context:
space:
mode:
author Artem Serov <artem.serov@linaro.org> 2017-10-19 16:18:07 +0100
committer Artem Serov <artem.serov@linaro.org> 2018-04-17 16:09:05 +0100
commit72411e6b3b286d91e4da894cd5b12e7a3dc88f40 (patch)
tree9bffb94a66fb5df1df05a53afa367406d069c773 /compiler/optimizing/superblock_cloner.h
parentddc694267aee845c9b61779be2a5487eb65b1757 (diff)
ART: Implement scalar loop peeling.
Implement scalar loop peeling for invariant exits elimination (on arm64). If the loop exit condition is loop invariant then loop peeling + GVN + DCE can eliminate this exit in the loop body. Note: GVN and DCE aren't applied during loop optimizations. Note: this functionality is turned off by default now. Test: test-art-host, test-art-target, boot-to-gui. Change-Id: I98d20054a431838b452dc06bd25c075eb445960c
Diffstat (limited to 'compiler/optimizing/superblock_cloner.h')
-rw-r--r--compiler/optimizing/superblock_cloner.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/optimizing/superblock_cloner.h b/compiler/optimizing/superblock_cloner.h
index afd5a5d6e7..e0931674cb 100644
--- a/compiler/optimizing/superblock_cloner.h
+++ b/compiler/optimizing/superblock_cloner.h
@@ -372,6 +372,9 @@ class PeelUnrollSimpleHelper : public ValueObject {
HBasicBlock* DoUnrolling() { return helper_.DoUnrolling(); }
HLoopInformation* GetRegionToBeAdjusted() const { return helper_.GetRegionToBeAdjusted(); }
+ const SuperblockCloner::HBasicBlockMap* GetBasicBlockMap() const { return &bb_map_; }
+ const SuperblockCloner::HInstructionMap* GetInstructionMap() const { return &hir_map_; }
+
private:
SuperblockCloner::HBasicBlockMap bb_map_;
SuperblockCloner::HInstructionMap hir_map_;