if (!Fast) {
PM.add(createLoopStrengthReducePass(getTargetLowering()));
if (PrintLSR)
- PM.add(createPrintFunctionPass("\n\n*** Code after LSR ***\n", &cerr));
+ PM.add(createPrintFunctionPass("\n\n*** Code after LSR ***\n", &errs()));
}
PM.add(createGCLoweringPass());
if (!Fast)
PM.add(createCodeGenPreparePass(getTargetLowering()));
+ PM.add(createStackProtectorPass(getTargetLowering()));
+
if (PrintISelInput)
PM.add(createPrintFunctionPass("\n\n"
"*** Final LLVM Code input to ISel ***\n",
- &cerr));
+ &errs()));
// Standard Lower-Level Passes.
if (PrintMachineCode)
PM.add(createMachineFunctionPrinterPass(cerr));
- // If we're using Fast-ISel, clean up the mess.
- if (EnableFastISel)
- PM.add(createDeadMachineInstructionElimPass());
-
if (EnableLICM)
PM.add(createMachineLICMPass());
PM.add(createMachineFunctionPrinterPass(cerr));
// Second pass scheduler.
- if (!Fast && !DisablePostRAScheduler)
+ if (!Fast && !DisablePostRAScheduler) {
PM.add(createPostRAScheduler());
+ if (PrintMachineCode)
+ PM.add(createMachineFunctionPrinterPass(cerr));
+ }
+
// Branch folding must be run after regalloc and prolog/epilog insertion.
if (!Fast)
PM.add(createBranchFoldingPass(getEnableTailMergeDefault()));
+ if (PrintMachineCode)
+ PM.add(createMachineFunctionPrinterPass(cerr));
+
PM.add(createGCMachineCodeAnalysisPass());
if (PrintMachineCode)