Add testing for mismatched explicit type on a gep operator when loading from bitcode

llvm-svn: 232427
This commit is contained in:
David Blaikie 2015-03-16 22:03:50 +00:00
parent 3fc1563ad7
commit 12cf5d70e8
3 changed files with 5 additions and 1 deletions

View File

@ -1973,7 +1973,8 @@ std::error_code BitcodeReader::ParseConstants() {
bitc::CST_CODE_CE_INBOUNDS_GEP);
if (PointeeType &&
PointeeType != cast<GEPOperator>(V)->getSourceElementType())
return Error("Invalid record");
return Error("Explicit gep operator type does not match pointee type "
"of pointer operand");
break;
}
case bitc::CST_CODE_CE_SELECT: { // CE_SELECT: [opval#, opval#, opval#]

View File

@ -16,6 +16,8 @@ RUN: not llvm-dis -disable-output %p/Inputs/invalid-gep-mismatched-explicit-type
RUN: FileCheck --check-prefix=MISMATCHED-EXPLICIT-GEP %s
RUN: not llvm-dis -disable-output %p/Inputs/invalid-load-mismatched-explicit-type.bc 2>&1 | \
RUN: FileCheck --check-prefix=MISMATCHED-EXPLICIT-LOAD %s
RUN: not llvm-dis -disable-output %p/Inputs/invalid-gep-operator-mismatched-explicit-type.bc 2>&1 | \
RUN: FileCheck --check-prefix=MISMATCHED-EXPLICIT-GEP-OPERATOR %s
INVALID-ENCODING: Invalid encoding
BAD-ABBREV: Abbreviation starts with an Array or a Blob
@ -26,6 +28,7 @@ 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
MISMATCHED-EXPLICIT-LOAD: Explicit load type does not match pointee type of pointer operand
MISMATCHED-EXPLICIT-GEP-OPERATOR: Explicit gep operator 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