summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorNuno Lopes <nunoplopes@sapo.pt>2012-07-03 17:13:25 +0000
committerNuno Lopes <nunoplopes@sapo.pt>2012-07-03 17:13:25 +0000
commit0dff532fce434c3e9fdf9695aed8efeb5f752ed5 (patch)
tree496d29c12a8f56d3c7ab9988f58e1005e43c45ef /include
parent44d5c064888aedd70a8f994bd379372d532ab46f (diff)
downloadllvm-0dff532fce434c3e9fdf9695aed8efeb5f752ed5.tar.gz
llvm-0dff532fce434c3e9fdf9695aed8efeb5f752ed5.tar.bz2
llvm-0dff532fce434c3e9fdf9695aed8efeb5f752ed5.tar.xz
fold PHI nodes in SizeOffsetEvaluator whenever possible.
Unfortunately this change requires the cache map to hold WeakVHs instead git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159667 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/Analysis/MemoryBuiltins.h12
1 files changed, 7 insertions, 5 deletions
diff --git a/include/llvm/Analysis/MemoryBuiltins.h b/include/llvm/Analysis/MemoryBuiltins.h
index 2dcd9fe087..e674e74520 100644
--- a/include/llvm/Analysis/MemoryBuiltins.h
+++ b/include/llvm/Analysis/MemoryBuiltins.h
@@ -22,6 +22,7 @@
#include "llvm/Support/DataTypes.h"
#include "llvm/Support/InstVisitor.h"
#include "llvm/Support/TargetFolder.h"
+#include "llvm/Support/ValueHandle.h"
namespace llvm {
class CallInst;
@@ -195,7 +196,8 @@ class ObjectSizeOffsetEvaluator
: public InstVisitor<ObjectSizeOffsetEvaluator, SizeOffsetEvalType> {
typedef IRBuilder<true, TargetFolder> BuilderTy;
- typedef DenseMap<const Value*, SizeOffsetEvalType> CacheMapTy;
+ typedef std::pair<WeakVH, WeakVH> WeakEvalType;
+ typedef DenseMap<const Value*, WeakEvalType> CacheMapTy;
typedef SmallPtrSet<const Value*, 8> PtrSetTy;
const TargetData *TD;
@@ -216,19 +218,19 @@ public:
ObjectSizeOffsetEvaluator(const TargetData *TD, LLVMContext &Context);
SizeOffsetEvalType compute(Value *V);
- bool knownSize(SizeOffsetEvalType &SizeOffset) {
+ bool knownSize(SizeOffsetEvalType SizeOffset) {
return SizeOffset.first;
}
- bool knownOffset(SizeOffsetEvalType &SizeOffset) {
+ bool knownOffset(SizeOffsetEvalType SizeOffset) {
return SizeOffset.second;
}
- bool anyKnown(SizeOffsetEvalType &SizeOffset) {
+ bool anyKnown(SizeOffsetEvalType SizeOffset) {
return knownSize(SizeOffset) || knownOffset(SizeOffset);
}
- bool bothKnown(SizeOffsetEvalType &SizeOffset) {
+ bool bothKnown(SizeOffsetEvalType SizeOffset) {
return knownSize(SizeOffset) && knownOffset(SizeOffset);
}