diff options
author | Arthur Eubanks <aeubanks@google.com> | 2021-05-13 15:44:21 -0700 |
---|---|---|
committer | Arthur Eubanks <aeubanks@google.com> | 2021-05-18 13:43:50 -0700 |
commit | 6013d84392fa1b7683921f9d3b6aedb357233e06 (patch) | |
tree | 7a81a569e2cd26c35228cb96cec58696198bee20 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp | |
parent | 832f7af2832ed4c059e2fc2c1b7663b5d0ff9494 (diff) | |
download | llvm-6013d84392fa1b7683921f9d3b6aedb357233e06.zip llvm-6013d84392fa1b7683921f9d3b6aedb357233e06.tar.gz llvm-6013d84392fa1b7683921f9d3b6aedb357233e06.tar.bz2 |
[OpaquePtr] Make loads and stores work with opaque pointers
Don't check that types match when the pointer operand is an opaque
pointer.
I would separate the Assembler and Verifier changes, but
verify-uselistorder in the Assembler test ends up running the verifier.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D102450
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 25edf24..b2794b3 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -3844,12 +3844,11 @@ Error BitcodeReader::parseBitcodeInto(Module *M, bool ShouldLazyLoadMetadata, Error BitcodeReader::typeCheckLoadStoreInst(Type *ValType, Type *PtrType) { if (!isa<PointerType>(PtrType)) return error("Load/Store operand is not a pointer type"); - Type *ElemType = cast<PointerType>(PtrType)->getElementType(); - if (ValType && ValType != ElemType) + if (!cast<PointerType>(PtrType)->isOpaqueOrPointeeTypeMatches(ValType)) return error("Explicit load/store type does not match pointee " "type of pointer operand"); - if (!PointerType::isLoadableOrStorableType(ElemType)) + if (!PointerType::isLoadableOrStorableType(ValType)) return error("Cannot load/store from pointer"); return Error::success(); } |