aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ConstantFolding.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2015-07-27 18:31:03 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2015-07-27 18:31:03 +0000
commit95365ca482c338634fdbc0a6c8176c52ad8bc7c6 (patch)
treeaa74f6269b64696042d26aeec287ad2fe541a2e5 /llvm/lib/Analysis/ConstantFolding.cpp
parentcd973c4f77be116206f6f6518e181858f989c09f (diff)
downloadllvm-95365ca482c338634fdbc0a6c8176c52ad8bc7c6.zip
llvm-95365ca482c338634fdbc0a6c8176c52ad8bc7c6.tar.gz
llvm-95365ca482c338634fdbc0a6c8176c52ad8bc7c6.tar.bz2
Fix assert when inlining a constantexpr addrspacecast
The pointer size of the addrspacecasted pointer might not have matched, so this would have hit an assert in accumulateConstantOffset. I think this was here to allow constant folding of a load of an addrspacecasted constant. Accumulating the offset through the addrspacecast doesn't make much sense, so something else is necessary to allow folding the load through this cast. llvm-svn: 243300
Diffstat (limited to 'llvm/lib/Analysis/ConstantFolding.cpp')
-rw-r--r--llvm/lib/Analysis/ConstantFolding.cpp3
1 files changed, 1 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp
index 70c929b..07f53be 100644
--- a/llvm/lib/Analysis/ConstantFolding.cpp
+++ b/llvm/lib/Analysis/ConstantFolding.cpp
@@ -248,8 +248,7 @@ static bool IsConstantOffsetFromGlobal(Constant *C, GlobalValue *&GV,
// Look through ptr->int and ptr->ptr casts.
if (CE->getOpcode() == Instruction::PtrToInt ||
- CE->getOpcode() == Instruction::BitCast ||
- CE->getOpcode() == Instruction::AddrSpaceCast)
+ CE->getOpcode() == Instruction::BitCast)
return IsConstantOffsetFromGlobal(CE->getOperand(0), GV, Offset, DL);
// i32* getelementptr ([5 x i32]* @a, i32 0, i32 5)