diff options
author | Ewan Crawford <ewan@codeplay.com> | 2018-07-31 15:53:03 +0000 |
---|---|---|
committer | Ewan Crawford <ewan@codeplay.com> | 2018-07-31 15:53:03 +0000 |
commit | d83beb804cbd9dab502314494ea3386fc3e0807f (patch) | |
tree | 9924249c403b2477aec82d133a45c2e23e119cd8 /llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp | |
parent | bdcf6ad60d39a64de8c620d1e0982e5450f916e8 (diff) | |
download | llvm-d83beb804cbd9dab502314494ea3386fc3e0807f.zip llvm-d83beb804cbd9dab502314494ea3386fc3e0807f.tar.gz llvm-d83beb804cbd9dab502314494ea3386fc3e0807f.tar.bz2 |
Fix InstCombine address space assert
Workaround bug where the InstCombine pass was asserting on the IR added in lit
test, where we have a bitcast instruction after a GEP from an addrspace cast.
The second bitcast in the test was getting combined into
`bitcast <16 x i32>* %0 to <16 x i32> addrspace(3)*`, which looks like it should
be an addrspace cast instruction instead. Otherwise if control flow is allowed
to continue as it is now we create a GEP instruction
`<badref> = getelementptr inbounds <16 x i32>, <16 x i32>* %0, i32 0`. However
because the type of this instruction doesn't match the address space we hit an
assert when replacing the bitcast with that GEP.
```
void llvm::Value::doRAUW(llvm::Value*, bool): Assertion `New->getType() == getType() && "replaceAllUses of value with new value of different type!"' failed.
```
Differential Revision: https://reviews.llvm.org/D50058
llvm-svn: 338395
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/DebugHandlerBase.cpp')
0 files changed, 0 insertions, 0 deletions