Factor out Instruction::isSafeToSpeculativelyExecute's code for
authorDan Gohman <gohman@apple.com>
Thu, 11 Nov 2010 21:23:25 +0000 (21:23 +0000)
committerDan Gohman <gohman@apple.com>
Thu, 11 Nov 2010 21:23:25 +0000 (21:23 +0000)
commit4d70a2949007edeaad4662d5cdcb2d272cb2b2ff
tree107a06a85b499d7d22a2535322267b7966c4a9fb
parent410cb57524e3bfb022df20091ae4a5fa1fa7005d
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
include/llvm/Value.h
lib/Transforms/IPO/ArgumentPromotion.cpp
lib/VMCore/Instruction.cpp
lib/VMCore/Value.cpp
test/Transforms/SimplifyCFG/speculate-with-offset.ll [new file with mode: 0644]