From: David Blaikie Date: Mon, 16 Mar 2015 22:03:50 +0000 (+0000) Subject: Add testing for mismatched explicit type on a gep operator when loading from bitcode X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=712d00bc64b9172e0d740d8126db08103ff845d3;p=oota-llvm.git Add testing for mismatched explicit type on a gep operator when loading from bitcode git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@232427 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Bitcode/Reader/BitcodeReader.cpp b/lib/Bitcode/Reader/BitcodeReader.cpp index dd42bdb5804..a95ceead54e 100644 --- a/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/lib/Bitcode/Reader/BitcodeReader.cpp @@ -1973,7 +1973,8 @@ std::error_code BitcodeReader::ParseConstants() { bitc::CST_CODE_CE_INBOUNDS_GEP); if (PointeeType && PointeeType != cast(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#] diff --git a/test/Bitcode/Inputs/invalid-gep-operator-mismatched-explicit-type.bc b/test/Bitcode/Inputs/invalid-gep-operator-mismatched-explicit-type.bc new file mode 100644 index 00000000000..3af687f056f Binary files /dev/null and b/test/Bitcode/Inputs/invalid-gep-operator-mismatched-explicit-type.bc differ diff --git a/test/Bitcode/invalid.test b/test/Bitcode/invalid.test index edf122b8dff..0eacb9dbbb1 100644 --- a/test/Bitcode/invalid.test +++ b/test/Bitcode/invalid.test @@ -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