summaryrefslogtreecommitdiff
path: root/compiler/optimizing/nodes.h
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/nodes.h')
-rw-r--r--compiler/optimizing/nodes.h33
1 files changed, 21 insertions, 12 deletions
diff --git a/compiler/optimizing/nodes.h b/compiler/optimizing/nodes.h
index 96f9abafbf..8a9e61875a 100644
--- a/compiler/optimizing/nodes.h
+++ b/compiler/optimizing/nodes.h
@@ -323,6 +323,7 @@ class HGraph : public ArenaObject<kArenaAllocGraph> {
temporaries_vreg_slots_(0),
has_bounds_checks_(false),
has_try_catch_(false),
+ has_loops_(false),
has_irreducible_loops_(false),
debuggable_(debuggable),
current_instruction_id_(start_instruction_id),
@@ -559,6 +560,9 @@ class HGraph : public ArenaObject<kArenaAllocGraph> {
bool HasTryCatch() const { return has_try_catch_; }
void SetHasTryCatch(bool value) { has_try_catch_ = value; }
+ bool HasLoops() const { return has_loops_; }
+ void SetHasLoops(bool value) { has_loops_ = value; }
+
bool HasIrreducibleLoops() const { return has_irreducible_loops_; }
void SetHasIrreducibleLoops(bool value) { has_irreducible_loops_ = value; }
@@ -637,14 +641,26 @@ class HGraph : public ArenaObject<kArenaAllocGraph> {
// Number of vreg size slots that the temporaries use (used in baseline compiler).
size_t temporaries_vreg_slots_;
- // Has bounds checks. We can totally skip BCE if it's false.
+ // Flag whether there are bounds checks in the graph. We can skip
+ // BCE if it's false. It's only best effort to keep it up to date in
+ // the presence of code elimination so there might be false positives.
bool has_bounds_checks_;
- // Flag whether there are any try/catch blocks in the graph. We will skip
- // try/catch-related passes if false.
+ // Flag whether there are try/catch blocks in the graph. We will skip
+ // try/catch-related passes if it's false. It's only best effort to keep
+ // it up to date in the presence of code elimination so there might be
+ // false positives.
bool has_try_catch_;
- // Flag whether there are any irreducible loops in the graph.
+ // Flag whether there are any loops in the graph. We can skip loop
+ // optimization if it's false. It's only best effort to keep it up
+ // to date in the presence of code elimination so there might be false
+ // positives.
+ bool has_loops_;
+
+ // Flag whether there are any irreducible loops in the graph. It's only
+ // best effort to keep it up to date in the presence of code elimination
+ // so there might be false positives.
bool has_irreducible_loops_;
// Indicates whether the graph should be compiled in a way that
@@ -1346,6 +1362,7 @@ class HLoopInformationOutwardIterator : public ValueObject {
#else
#define FOR_EACH_CONCRETE_INSTRUCTION_SHARED(M) \
M(BitwiseNegatedRight, Instruction) \
+ M(DataProcWithShifterOp, Instruction) \
M(MultiplyAccumulate, Instruction) \
M(IntermediateAddress, Instruction)
#endif
@@ -1357,12 +1374,7 @@ class HLoopInformationOutwardIterator : public ValueObject {
M(ArmDexCacheArraysBase, Instruction)
#endif
-#ifndef ART_ENABLE_CODEGEN_arm64
#define FOR_EACH_CONCRETE_INSTRUCTION_ARM64(M)
-#else
-#define FOR_EACH_CONCRETE_INSTRUCTION_ARM64(M) \
- M(Arm64DataProcWithShifterOp, Instruction)
-#endif
#ifndef ART_ENABLE_CODEGEN_mips
#define FOR_EACH_CONCRETE_INSTRUCTION_MIPS(M)
@@ -6603,9 +6615,6 @@ class HParallelMove FINAL : public HTemplateInstruction<0> {
#ifdef ART_ENABLE_CODEGEN_arm
#include "nodes_arm.h"
#endif
-#ifdef ART_ENABLE_CODEGEN_arm64
-#include "nodes_arm64.h"
-#endif
#ifdef ART_ENABLE_CODEGEN_mips
#include "nodes_mips.h"
#endif