From 6b879ddc0959df1cec871f0d41f11cce35a11716 Mon Sep 17 00:00:00 2001 From: Roland Levillain Date: Mon, 22 Sep 2014 17:13:44 +0100 Subject: Add loop- and phi-related checks in the optimizing compiler. - Ensure the pre-header block is first in the list of predecessors of a loop header. - Ensure the loop header has only two predecessors and that only the second one is the back edge. - Ensure there is only one back edge per loop. - Ensure the first input of a phi is not itself. - Ensure the number of phi inputs is the same as the number of its predecessors. - Ensure phi input at index I either comes from the Ith predecessor or from a block that dominates this predecessor. Change-Id: I4db5c68cfbc9b74d2d03125753d0143ece625378 --- compiler/optimizing/graph_checker.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'compiler/optimizing/graph_checker.h') diff --git a/compiler/optimizing/graph_checker.h b/compiler/optimizing/graph_checker.h index 8ddd399456..34a770b5f3 100644 --- a/compiler/optimizing/graph_checker.h +++ b/compiler/optimizing/graph_checker.h @@ -67,9 +67,12 @@ class SSAChecker : public GraphChecker { // Perform SSA form checks on `block`. virtual void VisitBasicBlock(HBasicBlock* block) OVERRIDE; + // Loop-related checks from block `loop_header`. + void CheckLoop(HBasicBlock* loop_header); - // Perform SSA form checks on `instruction`. + // Perform SSA form checks on instructions. virtual void VisitInstruction(HInstruction* instruction) OVERRIDE; + virtual void VisitPhi(HPhi* phi) OVERRIDE; private: DISALLOW_COPY_AND_ASSIGN(SSAChecker); -- cgit v1.2.3