summaryrefslogtreecommitdiff
path: root/compiler/optimizing/nodes.h
diff options
context:
space:
mode:
author Vladimir Marko <vmarko@google.com> 2015-12-01 14:15:52 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2015-12-01 14:15:52 +0000
commitb1aa617639c01c0dffaafd1641e0304ad179b6a2 (patch)
treecae80877a94ad82e3fdecb5ff32a9d99d21c6edc /compiler/optimizing/nodes.h
parent1965328f598854bfdf2d41cea582460d11aeba48 (diff)
parentfb337ea53d1e6fe68b24217a9ea95e9f544ef697 (diff)
Merge "Move PC-relative addressing bases to a better position."
Diffstat (limited to 'compiler/optimizing/nodes.h')
-rw-r--r--compiler/optimizing/nodes.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h
index 9c33a0fa90..441aa0493a 100644
--- a/compiler/optimizing/nodes.h
+++ b/compiler/optimizing/nodes.h
@@ -1957,6 +1957,14 @@ class HInstruction : public ArenaObject<kArenaAllocInstruction> {
// Move `this` instruction before `cursor`.
void MoveBefore(HInstruction* cursor);
+ // Move `this` before its first user and out of any loops. If there is no
+ // out-of-loop user that dominates all other users, move the instruction
+ // to the end of the out-of-loop common dominator of the user's blocks.
+ //
+ // This can be used only on non-throwing instructions with no side effects that
+ // have at least one use but no environment uses.
+ void MoveBeforeFirstUserAndOutOfLoops();
+
#define INSTRUCTION_TYPE_CHECK(type, super) \
bool Is##type() const { return (As##type() != nullptr); } \
virtual const H##type* As##type() const { return nullptr; } \