From be478819cb23806720aae6a794de543b12602be6 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 5 Jan 2011 01:03:32 +0000 Subject: [PATCH] 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 --- include/llvm/Support/StandardPasses.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/include/llvm/Support/StandardPasses.h b/include/llvm/Support/StandardPasses.h index 9372bf299a5..e5c8b7eb7ad 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