/** * The entry point for this phase * * @param ir the IR * @param forward Should we compute regular dominators, or post-dominators? * @param unfactor Should we unfactor the CFG? */ public static void perform(IR ir, boolean forward, boolean unfactor) { if (ir.hasReachableExceptionHandlers()) { if (unfactor) { ir.unfactor(); } else { throw new OperationNotImplementedException("IR with exception handlers"); } } LTDominators dom = new LTDominators(ir, forward); dom.analyze(ir); }
/** * Compute approximate dominator/post dominator without unfactoring exception handlers. Can only * be used if what the client wants is approximate domination (ie, if it doesn't actually have to * be correct...) * * @param ir the IR * @param forward Should we compute regular dominators, or post-dominators? */ public static void approximate(IR ir, boolean forward) { LTDominators dom = new LTDominators(ir, forward); dom.analyze(ir); }