aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2011-01-05 01:03:32 +0000
committerChris Lattner <sabre@nondot.org>2011-01-05 01:03:32 +0000
commitbe478819cb23806720aae6a794de543b12602be6 (patch)
tree6ee0e670aca865b44354123cfe9e4ee158bd1975
parent2d31d14bace4cf225e997c78daefccc52e38186c (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.h7
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