new OPT_LoopVersioning(),
  private static void SSAinHIR(ArrayList p) {    composeComponents      (p, "SSA", new Object[] {        // Use the LST to estimate basic block frequency from branch probabilities       new OPT_OptimizationPlanCompositeElement       ("Basic Block Frequency Estimation", new Object[] {        new OPT_BuildLST(),        new OPT_EstimateBlockFrequencies()        }) {       public boolean shouldPerform(OPT_Options options) {       return options.getOptLevel() >= 2;       }},       new OPT_OptimizationPlanCompositeElement        ("HIR SSA transformations",         new Object[] {        // Local copy propagation        new OPT_LocalCopyProp(),        // Local constant propagation        new OPT_LocalConstantProp(),        // Insert PI Nodes        new OPT_PiNodes(true),         // branch optimization        new OPT_BranchOptimizations(2, true, true),        // Compute dominators        new OPT_DominatorsPhase(true),         // compute dominance frontier        new OPT_DominanceFrontier(),        // load elimination        new OPT_LoadElimination(1),         // load elimination        new OPT_LoadElimination(2),         // load elimination        new OPT_LoadElimination(3),         // load elimination        new OPT_LoadElimination(4),         // load elimination        new OPT_LoadElimination(5),         // eliminate redundant conditional branches        new OPT_RedundantBranchElimination(),        // path sensitive constant propagation        new OPT_SSATuneUp(),         // clean up Pi Nodes        new OPT_PiNodes(false),         // Simple SSA optimizations,        new OPT_SSATuneUp(),         // Global Code Placement,        new OPT_GCP(),         // Leave SSA         new OPT_LeaveSSA() })     {          public boolean shouldPerform(OPT_Options options) {            return options.getOptLevel() >= 2;          }        },        // Coalesce moves        new OPT_CoalesceMoves(),         // SSA reveals new opportunites for the following        new OPT_OptimizationPlanCompositeElement          ("Post SSA cleanup", new Object[] {           new OPT_LocalCopyProp(),           new OPT_LocalConstantProp(),           new OPT_Simple(2, true, true),           new OPT_EscapeTransformations(),           new OPT_BranchOptimizations(2, true, true)            }) {            public boolean shouldPerform(OPT_Options options) {              return options.getOptLevel() >= 2;            }          }      }    );  }