From 0dff532fce434c3e9fdf9695aed8efeb5f752ed5 Mon Sep 17 00:00:00 2001 From: Nuno Lopes Date: Tue, 3 Jul 2012 17:13:25 +0000 Subject: 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 --- include/llvm/Analysis/MemoryBuiltins.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'include/llvm/Analysis/MemoryBuiltins.h') 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 { typedef IRBuilder BuilderTy; - typedef DenseMap CacheMapTy; + typedef std::pair WeakEvalType; + typedef DenseMap CacheMapTy; typedef SmallPtrSet 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); } -- cgit v1.2.3