diff options
author | 2015-12-01 14:15:52 +0000 | |
---|---|---|
committer | 2015-12-01 14:15:52 +0000 | |
commit | b1aa617639c01c0dffaafd1641e0304ad179b6a2 (patch) | |
tree | cae80877a94ad82e3fdecb5ff32a9d99d21c6edc /compiler/optimizing/nodes.h | |
parent | 1965328f598854bfdf2d41cea582460d11aeba48 (diff) | |
parent | fb337ea53d1e6fe68b24217a9ea95e9f544ef697 (diff) |
Merge "Move PC-relative addressing bases to a better position."
Diffstat (limited to 'compiler/optimizing/nodes.h')
-rw-r--r-- | compiler/optimizing/nodes.h | 8 |
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; } \ |