From 4a34277c55279ba57ab361f7580db846a201d9b1 Mon Sep 17 00:00:00 2001 From: Aart Bik Date: Mon, 30 Nov 2015 10:17:46 -0800 Subject: Dynamic BCE (based on induction range analysis) Rationale: A rewritten dynamic BCE that uses induction variable analysis to generate the run-time tests before a loop in order to eliminate bounds-checks from its body. This CL removes now obsoleted induction related code inside the BCE module. Also, the dynamic test generation is placed more strategically, since we missed a few cases where static analysis does better. Most significant performance improvements (filtering noise) is about: Linpack +20% LU > +10% Change-Id: I03d7631857154b6a131b132f26a2dc568af1b3a1 --- compiler/optimizing/graph_checker.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'compiler/optimizing/graph_checker.cc') diff --git a/compiler/optimizing/graph_checker.cc b/compiler/optimizing/graph_checker.cc index b3b09d2155..c16b872466 100644 --- a/compiler/optimizing/graph_checker.cc +++ b/compiler/optimizing/graph_checker.cc @@ -739,7 +739,9 @@ void SSAChecker::VisitPhi(HPhi* phi) { // created for constants which were untyped in DEX. Note that this test can be skipped for // a synthetic phi (indicated by lack of a virtual register). if (phi->GetRegNumber() != kNoRegNumber) { - for (HInstructionIterator phi_it(phi->GetBlock()->GetPhis()); !phi_it.Done(); phi_it.Advance()) { + for (HInstructionIterator phi_it(phi->GetBlock()->GetPhis()); + !phi_it.Done(); + phi_it.Advance()) { HPhi* other_phi = phi_it.Current()->AsPhi(); if (phi != other_phi && phi->GetRegNumber() == other_phi->GetRegNumber()) { if (phi->GetType() == other_phi->GetType()) { -- cgit v1.2.3-59-g8ed1b