diff options
Diffstat (limited to 'compiler/optimizing/graph_visualizer.cc')
-rw-r--r-- | compiler/optimizing/graph_visualizer.cc | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/compiler/optimizing/graph_visualizer.cc b/compiler/optimizing/graph_visualizer.cc index c606bd7a29..22a3d124f1 100644 --- a/compiler/optimizing/graph_visualizer.cc +++ b/compiler/optimizing/graph_visualizer.cc @@ -18,6 +18,7 @@ #include "code_generator.h" #include "nodes.h" +#include "optimization.h" #include "ssa_liveness_analysis.h" namespace art { @@ -216,6 +217,14 @@ class HGraphVisualizerPrinter : public HGraphVisitor { } } output_ << " (liveness: " << instruction->GetLifetimePosition() << ")"; + } else if (pass_name_ == kLoopInvariantCodeMotionPassName) { + output_ << " ( loop_header:"; + HLoopInformation* info = instruction->GetBlock()->GetLoopInformation(); + if (info == nullptr) { + output_ << "null )"; + } else { + output_ << "B" << info->GetHeader()->GetBlockId() << " )"; + } } } @@ -223,10 +232,16 @@ class HGraphVisualizerPrinter : public HGraphVisitor { const char* kEndInstructionMarker = "<|@"; for (HInstructionIterator it(list); !it.Done(); it.Advance()) { HInstruction* instruction = it.Current(); - AddIndent(); int bci = 0; - output_ << bci << " " << instruction->ExpensiveComputeNumberOfUses() - << " " << GetTypeId(instruction->GetType()) << instruction->GetId() << " "; + size_t num_uses = 0; + for (HUseIterator<HInstruction*> use_it(instruction->GetUses()); + !use_it.Done(); + use_it.Advance()) { + ++num_uses; + } + AddIndent(); + output_ << bci << " " << num_uses << " " + << GetTypeId(instruction->GetType()) << instruction->GetId() << " "; PrintInstruction(instruction); output_ << kEndInstructionMarker << std::endl; } |