diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2015-07-27 18:31:03 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2015-07-27 18:31:03 +0000 |
commit | 95365ca482c338634fdbc0a6c8176c52ad8bc7c6 (patch) | |
tree | aa74f6269b64696042d26aeec287ad2fe541a2e5 /llvm/lib/Analysis/ConstantFolding.cpp | |
parent | cd973c4f77be116206f6f6518e181858f989c09f (diff) | |
download | llvm-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.cpp | 3 |
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) |