if (options.PRINT_DOMINATORS || options.PRINT_SSA) {
  final void perform(OPT_IR ir) {    try {      // reset flags in case an exception is thrown inside "perform"      // and it doesn't return normally      ir.HIRInfo.dominatorsAreComputed = false;      // compute (forward) dominators,       // leaves info in scratch object of basic blocks      OPT_LTDominators.perform(ir, true);      // create the dominator tree, relies on dominator info being      // in scratch object of basic blocks      OPT_DominatorTree.perform(ir, true);      // create the loop structured tree (LST)      OPT_LSTGraph.perform(ir);      // computation completed, so set flag      ir.HIRInfo.dominatorsAreComputed = true;    } catch (OPT_OperationNotImplementedException e) {      OPT_Options options = ir.options;      if (options.PRINT_DOMINATORS || options.PRINT_SSA) {        OPT_Compiler.report(e.getMessage());      }    }  }