aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
diff options
context:
space:
mode:
authorArthur Eubanks <aeubanks@google.com>2021-05-18 15:23:00 -0700
committerArthur Eubanks <aeubanks@google.com>2021-05-19 12:39:37 -0700
commit28b9771472fa3df2568b6c5de1a9726680d940d3 (patch)
treea53ea3b486f1537e5224582f65df816c66c36eb1 /llvm/lib/Bitcode/Reader/BitcodeReader.cpp
parent4b074b49be206306330076b9fa40632ef1960823 (diff)
downloadllvm-28b9771472fa3df2568b6c5de1a9726680d940d3.zip
llvm-28b9771472fa3df2568b6c5de1a9726680d940d3.tar.gz
llvm-28b9771472fa3df2568b6c5de1a9726680d940d3.tar.bz2
[OpaquePtr] Make GEPs work with opaque pointers
No verifier changes needed, the verifier currently doesn't check that the pointer operand's pointee type matches the GEP type. There is a similar check in GetElementPtrInst::Create() though. Reviewed By: dblaikie Differential Revision: https://reviews.llvm.org/D102744
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r--llvm/lib/Bitcode/Reader/BitcodeReader.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index b2794b3..c61d66f 100644
--- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
@@ -4168,7 +4168,8 @@ Error BitcodeReader::parseFunctionBody(Function *F) {
if (!Ty) {
std::tie(FullTy, Ty) =
getPointerElementTypes(FullBaseTy->getScalarType());
- } else if (Ty != getPointerElementFlatType(FullBaseTy->getScalarType()))
+ } else if (!cast<PointerType>(FullBaseTy->getScalarType())
+ ->isOpaqueOrPointeeTypeMatches(Ty))
return error(
"Explicit gep type does not match pointee type of pointer operand");