This llvm-gcc4 patch enabled predicate simplification pass. And now loop unrolling is enabled only at -O2 or when -funroll-loops is used.
Index: llvm-backend.cpp =================================================================== --- llvm-backend.cpp (revision 119002) +++ llvm-backend.cpp (working copy) @@ -234,6 +234,7 @@ void llvm_asm_file_start(void) { PM->add(createCFGSimplificationPass()); // Merge & remove BBs PM->add(createScalarReplAggregatesPass()); // Break up aggregate allocas PM->add(createInstructionCombiningPass()); // Combine silly seq's + PM->add(createPredicateSimplifierPass()); // Canonicalize registers PM->add(createCondPropagationPass()); // Propagate conditionals PM->add(createTailCallEliminationPass()); // Eliminate tail calls PM->add(createCFGSimplificationPass()); // Merge & remove BBs @@ -242,7 +243,8 @@ void llvm_asm_file_start(void) { PM->add(createLoopUnswitchPass()); // Unswitch loops. PM->add(createInstructionCombiningPass()); // Clean up after LICM/reassoc PM->add(createIndVarSimplifyPass()); // Canonicalize indvars - PM->add(createLoopUnrollPass()); // Unroll small loops + if (flag_unroll_loops || optimize > 2) + PM->add(createLoopUnrollPass()); // Unroll small loops PM->add(createInstructionCombiningPass()); // Clean up after the unroller if (optimize > 2) _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits