[llvm-commits] [llvm] r48939 - /llvm/trunk/lib/Transforms/Scalar/GVN.cpp
Chris Lattner
sabre at nondot.org
Fri Mar 28 21:52:12 PDT 2008
Author: lattner
Date: Fri Mar 28 23:52:12 2008
New Revision: 48939
URL: http://llvm.org/viewvc/llvm-project?rev=48939&view=rev
Log:
make the common case of a single store (which clearly shouldn't be turned
into a memset!) faster by avoiding an allocation of an std::list node.
Modified:
llvm/trunk/lib/Transforms/Scalar/GVN.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVN.cpp?rev=48939&r1=48938&r2=48939&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Fri Mar 28 23:52:12 2008
@@ -1182,7 +1182,7 @@
typedef std::list<MemsetRange>::const_iterator const_iterator;
const_iterator begin() const { return Ranges.begin(); }
const_iterator end() const { return Ranges.end(); }
-
+ bool empty() const { return Ranges.empty(); }
void addStore(int64_t OffsetFromFirst, StoreInst *SI);
};
@@ -1281,8 +1281,6 @@
// are stored.
MemsetRanges Ranges(TD);
- // Add our first pointer.
- Ranges.addStore(0, SI);
Value *StartPtr = SI->getPointerOperand();
BasicBlock::iterator BI = SI;
@@ -1319,6 +1317,17 @@
Ranges.addStore(Offset, NextStore);
}
+
+ // If we have no ranges, then we just had a single store with nothing that
+ // could be merged in. This is a very common case of course.
+ if (Ranges.empty())
+ return false;
+
+ // If we had at least one store that could be merged in, add the starting
+ // store as well. We try to avoid this unless there is at least something
+ // interesting as a small compile-time optimization.
+ Ranges.addStore(0, SI);
+
Function *MemSetF = 0;
More information about the llvm-commits
mailing list