diff options
author | Chris Lattner <sabre@nondot.org> | 2011-01-05 01:03:32 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2011-01-05 01:03:32 +0000 |
commit | be478819cb23806720aae6a794de543b12602be6 (patch) | |
tree | 6ee0e670aca865b44354123cfe9e4ee158bd1975 | |
parent | 2d31d14bace4cf225e997c78daefccc52e38186c (diff) |
Fix PR8906: -fno-builtin should disable loop-idiom recognition.
It forms memset and memcpy's, and will someday form popcount and
other stuff. All of this is bad when compiling the implementation
of memset, memcpy, popcount, etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@122854 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Support/StandardPasses.h | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/include/llvm/Support/StandardPasses.h b/include/llvm/Support/StandardPasses.h index 9372bf299a..e5c8b7eb7a 100644 --- a/include/llvm/Support/StandardPasses.h +++ b/include/llvm/Support/StandardPasses.h @@ -97,7 +97,7 @@ namespace llvm { bool OptimizeSize, bool UnitAtATime, bool UnrollLoops, - bool SimplifyLibCalls, + bool OptimizeBuiltins, bool HaveExceptions, Pass *InliningPass) { createStandardAliasAnalysisPasses(PM); @@ -130,7 +130,7 @@ namespace llvm { // Start of function pass. PM->add(createScalarReplAggregatesPass()); // Break up aggregate allocas PM->add(createEarlyCSEPass()); // Catch trivial redundancies - if (SimplifyLibCalls) + if (OptimizeBuiltins) PM->add(createSimplifyLibCallsPass()); // Library Call Optimizations PM->add(createInstructionCombiningPass()); // Cleanup for scalarrepl. PM->add(createJumpThreadingPass()); // Thread jumps. @@ -146,7 +146,8 @@ namespace llvm { PM->add(createLoopUnswitchPass(OptimizeSize || OptimizationLevel < 3)); PM->add(createInstructionCombiningPass()); PM->add(createIndVarSimplifyPass()); // Canonicalize indvars - PM->add(createLoopIdiomPass()); // Recognize idioms like memset. + if (OptimizeBuiltins) + PM->add(createLoopIdiomPass()); // Recognize idioms like memset. PM->add(createLoopDeletionPass()); // Delete dead loops if (UnrollLoops) PM->add(createLoopUnrollPass()); // Unroll small loops |