aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Value.h
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2010-11-11 21:23:25 +0000
committerDan Gohman <gohman@apple.com>2010-11-11 21:23:25 +0000
commit4d70a2949007edeaad4662d5cdcb2d272cb2b2ff (patch)
tree107a06a85b499d7d22a2535322267b7966c4a9fb /include/llvm/Value.h
parent410cb57524e3bfb022df20091ae4a5fa1fa7005d (diff)
downloadexternal_llvm-4d70a2949007edeaad4662d5cdcb2d272cb2b2ff.zip
external_llvm-4d70a2949007edeaad4662d5cdcb2d272cb2b2ff.tar.gz
external_llvm-4d70a2949007edeaad4662d5cdcb2d272cb2b2ff.tar.bz2
Factor out Instruction::isSafeToSpeculativelyExecute's code for
testing for dereferenceable pointers into a helper function, isDereferenceablePointer. Teach it how to reason about GEPs with simple non-zero indices. Also eliminate ArgumentPromtion's IsAlwaysValidPointer, which didn't check for weak externals or out of range gep indices. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118840 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Value.h')
-rw-r--r--include/llvm/Value.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/llvm/Value.h b/include/llvm/Value.h
index 8740f35..8dc4105 100644
--- a/include/llvm/Value.h
+++ b/include/llvm/Value.h
@@ -294,6 +294,10 @@ public:
const Value *getUnderlyingObject(unsigned MaxLookup = 6) const {
return const_cast<Value*>(this)->getUnderlyingObject(MaxLookup);
}
+
+ /// isDereferenceablePointer - Test if this value is always a pointer to
+ /// allocated and suitably aligned memory for a simple load or store.
+ bool isDereferenceablePointer() const;
/// DoPHITranslation - If this value is a PHI node with CurBB as its parent,
/// return the value in the PHI node corresponding to PredBB. If not, return