mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Test bitcode parsing error-handling for incorrect explicit type
(turns out I had regressed this when sinking handling of this type down into GetElementPtrInst::Create - since that asserted before the error handling was performed) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232420 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
9b4250d309
commit
f1d4614418
@ -3123,6 +3123,13 @@ std::error_code BitcodeReader::ParseFunctionBody(Function *F) {
|
||||
if (getValueTypePair(Record, OpNum, NextValueNo, BasePtr))
|
||||
return Error("Invalid record");
|
||||
|
||||
if (Ty &&
|
||||
Ty !=
|
||||
cast<SequentialType>(BasePtr->getType()->getScalarType())
|
||||
->getElementType())
|
||||
return Error(
|
||||
"Explicit gep type does not match pointee type of pointer operand");
|
||||
|
||||
SmallVector<Value*, 16> GEPIdx;
|
||||
while (OpNum != Record.size()) {
|
||||
Value *Op;
|
||||
@ -3132,8 +3139,7 @@ std::error_code BitcodeReader::ParseFunctionBody(Function *F) {
|
||||
}
|
||||
|
||||
I = GetElementPtrInst::Create(Ty, BasePtr, GEPIdx);
|
||||
if (Ty && Ty != cast<GetElementPtrInst>(I)->getSourceElementType())
|
||||
return Error("Invalid record");
|
||||
|
||||
InstructionList.push_back(I);
|
||||
if (InBounds)
|
||||
cast<GetElementPtrInst>(I)->setIsInBounds(true);
|
||||
|
BIN
test/Bitcode/Inputs/invalid-gep-mismatched-explicit-type.bc
Normal file
BIN
test/Bitcode/Inputs/invalid-gep-mismatched-explicit-type.bc
Normal file
Binary file not shown.
@ -12,6 +12,8 @@ RUN: not llvm-dis -disable-output %p/Inputs/invalid-bitwidth.bc 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=BAD-BITWIDTH %s
|
||||
RUN: not llvm-dis -disable-output %p/Inputs/invalid-align.bc 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=BAD-ALIGN %s
|
||||
RUN: not llvm-dis -disable-output %p/Inputs/invalid-gep-mismatched-explicit-type.bc 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=MISMATCHED-EXPLICIT-GEP %s
|
||||
|
||||
INVALID-ENCODING: Invalid encoding
|
||||
BAD-ABBREV: Abbreviation starts with an Array or a Blob
|
||||
@ -20,6 +22,7 @@ BAD-ABBREV-NUMBER: Invalid abbrev number
|
||||
BAD-TYPE-TABLE-FORWARD-REF: Invalid TYPE table: Only named structs can be forward referenced
|
||||
BAD-BITWIDTH: Bitwidth for integer type out of range
|
||||
BAD-ALIGN: Invalid alignment value
|
||||
MISMATCHED-EXPLICIT-GEP: Explicit gep type does not match pointee type of pointer operand
|
||||
|
||||
RUN: not llvm-dis -disable-output %p/Inputs/invalid-extractval-array-idx.bc 2>&1 | \
|
||||
RUN: FileCheck --check-prefix=EXTRACT-ARRAY %s
|
||||
|
Loading…
Reference in New Issue
Block a user