Program: 150156
Project: 150156
Buggy source:
/** 
 * Construct SSA form to satisfy the desired options in ir.desiredSSAOptions. This module is lazy; if the actual SSA options satisfy the desired options, then do nothing.
 * @param ir the governing IR
 */
final public void perform(OPT_IR ir){
  if (ir.desiredSSAOptions.getAbort())   return;
  if (ir.actualSSAOptions != null)   if (ir.actualSSAOptions.satisfies(ir.desiredSSAOptions))   return;
  this.ir=ir;
  boolean scalarsOnly=ir.desiredSSAOptions.getScalarsOnly();
  boolean backwards=ir.desiredSSAOptions.getBackwards();
  Set heapTypes=ir.desiredSSAOptions.getHeapTypes();
  boolean insertUsePhis=ir.desiredSSAOptions.getInsertUsePhis();
  boolean insertPEIDeps=ir.desiredSSAOptions.getInsertPEIDeps();
  boolean excludeGuards=ir.desiredSSAOptions.getExcludeGuards();
  if (!ir.HIRInfo.dominatorsAreComputed)   throw new OPT_OptimizingCompilerException("String_Node_Str");
  ir.HIRInfo.SSADictionary=new OPT_SSADictionary(null,true,false,ir);
  prepare();
  if (true)   patchPEIgeneratedValues();
  if (ir.options.PRINT_SSA)   OPT_SSA.printInstructions(ir);
  computeSSA(ir,scalarsOnly,backwards,heapTypes,insertUsePhis,insertPEIDeps,excludeGuards);
  ir.actualSSAOptions=new OPT_SSAOptions();
  ir.actualSSAOptions.setScalarsOnly(scalarsOnly);
  ir.actualSSAOptions.setBackwards(backwards);
  ir.actualSSAOptions.setHeapTypes(heapTypes);
  ir.actualSSAOptions.setInsertUsePhis(insertUsePhis);
  ir.actualSSAOptions.setInsertPEIDeps(insertPEIDeps);
  ir.actualSSAOptions.setExcludeGuards(excludeGuards);
}

Fixed version (ground truth):
/** 
 * Construct SSA form to satisfy the desired options in ir.desiredSSAOptions. This module is lazy; if the actual SSA options satisfy the desired options, then do nothing.
 * @param ir the governing IR
 */
final public void perform(OPT_IR ir){
  if (ir.desiredSSAOptions.getAbort())   return;
  if (ir.actualSSAOptions != null)   if (ir.actualSSAOptions.satisfies(ir.desiredSSAOptions))   return;
  this.ir=ir;
  boolean scalarsOnly=ir.desiredSSAOptions.getScalarsOnly();
  boolean backwards=ir.desiredSSAOptions.getBackwards();
  Set heapTypes=ir.desiredSSAOptions.getHeapTypes();
  boolean insertUsePhis=ir.desiredSSAOptions.getInsertUsePhis();
  boolean insertPEIDeps=ir.desiredSSAOptions.getInsertPEIDeps();
  boolean excludeGuards=ir.desiredSSAOptions.getExcludeGuards();
  if (!ir.HIRInfo.dominatorsAreComputed)   throw new OPT_OptimizingCompilerException("String_Node_Str");
  ir.HIRInfo.SSADictionary=new OPT_SSADictionary(null,true,false,ir);
  prepare();
  if (true)   patchPEIgeneratedValues();
  if (ir.options.PRINT_SSA)   OPT_SSA.printInstructions(ir);
  computeSSA(ir,scalarsOnly,backwards,heapTypes,insertUsePhis,insertPEIDeps,excludeGuards);
  ir.actualSSAOptions=new OPT_SSAOptions();
  ir.actualSSAOptions.setScalarsOnly(scalarsOnly);
  ir.actualSSAOptions.setBackwards(backwards);
  ir.actualSSAOptions.setHeapTypes(heapTypes);
  ir.actualSSAOptions.setInsertUsePhis(insertUsePhis);
  ir.actualSSAOptions.setInsertPEIDeps(insertPEIDeps);
  ir.actualSSAOptions.setExcludeGuards(excludeGuards);
  ir.actualSSAOptions.setScalarValid(true);
  ir.actualSSAOptions.setHeapValid(!scalarsOnly);
}