diff options
| author | Evan Cheng <evan.cheng@apple.com> | 2008-03-24 05:28:38 +0000 |
|---|---|---|
| committer | Evan Cheng <evan.cheng@apple.com> | 2008-03-24 05:28:38 +0000 |
| commit | 21a8e3d2606486abcf780eca2930c82e569b9195 (patch) | |
| tree | eb605caccf26cdb59dae26d5c350336961628ec7 /llvm/lib/Transforms | |
| parent | 200e57840ef8091ace32af1fba15079b42f31f4f (diff) | |
| download | bcm5719-llvm-21a8e3d2606486abcf780eca2930c82e569b9195.tar.gz bcm5719-llvm-21a8e3d2606486abcf780eca2930c82e569b9195.zip | |
Temporarily disabling memset forming optimization. Add an option.
llvm-svn: 48720
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/GVN.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/GVN.cpp b/llvm/lib/Transforms/Scalar/GVN.cpp index a3a33237a36..a9445dd8530 100644 --- a/llvm/lib/Transforms/Scalar/GVN.cpp +++ b/llvm/lib/Transforms/Scalar/GVN.cpp @@ -32,6 +32,7 @@ #include "llvm/Analysis/AliasAnalysis.h" #include "llvm/Analysis/MemoryDependenceAnalysis.h" #include "llvm/Support/CFG.h" +#include "llvm/Support/CommandLine.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/GetElementPtrTypeIterator.h" #include "llvm/Target/TargetData.h" @@ -41,6 +42,12 @@ STATISTIC(NumGVNInstr, "Number of instructions deleted"); STATISTIC(NumGVNLoad, "Number of loads deleted"); STATISTIC(NumMemSetInfer, "Number of memsets inferred"); +namespace { + cl::opt<bool> + FormMemSet("form-memset-from-stores", + cl::desc("Transform straight-line stores to memsets"), + cl::init(false), cl::Hidden); +} //===----------------------------------------------------------------------===// // ValueTable Class @@ -1102,6 +1109,7 @@ static bool IsPointerAtOffset(Value *Ptr1, Value *Ptr2, uint64_t Offset, /// neighboring locations of memory. If it sees enough consequtive ones /// (currently 4) it attempts to merge them together into a memcpy/memset. bool GVN::processStore(StoreInst *SI, SmallVectorImpl<Instruction*> &toErase) { + if (!FormMemSet) return false; if (SI->isVolatile()) return false; // There are two cases that are interesting for this code to handle: memcpy |

