diff options
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 3 | ||||
| -rw-r--r-- | llvm/test/Bitcode/Inputs/invalid-fwdref-type-mismatch-2.bc | bin | 0 -> 617 bytes | |||
| -rw-r--r-- | llvm/test/Bitcode/invalid.test | 5 |
3 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 95cf51f1419..f6d5ccc1a59 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -785,7 +785,8 @@ Constant *BitcodeReaderValueList::getConstantFwdRef(unsigned Idx, resize(Idx + 1); if (Value *V = ValuePtrs[Idx]) { - assert(Ty == V->getType() && "Type mismatch in constant table!"); + if (Ty != V->getType()) + report_fatal_error("Type mismatch in constant table!"); return cast<Constant>(V); } diff --git a/llvm/test/Bitcode/Inputs/invalid-fwdref-type-mismatch-2.bc b/llvm/test/Bitcode/Inputs/invalid-fwdref-type-mismatch-2.bc Binary files differnew file mode 100644 index 00000000000..8e38340eede --- /dev/null +++ b/llvm/test/Bitcode/Inputs/invalid-fwdref-type-mismatch-2.bc diff --git a/llvm/test/Bitcode/invalid.test b/llvm/test/Bitcode/invalid.test index 5cdd25387b6..eb7f979d574 100644 --- a/llvm/test/Bitcode/invalid.test +++ b/llvm/test/Bitcode/invalid.test @@ -99,6 +99,11 @@ RUN: FileCheck --check-prefix=FWDREF-TYPE %s FWDREF-TYPE: Invalid record +RUN: not llvm-dis -disable-output %p/Inputs/invalid-fwdref-type-mismatch-2.bc 2>&1 | \ +RUN: FileCheck --check-prefix=FWDREF-TYPE-MISMATCH %s + +FWDREF-TYPE-MISMATCH: Type mismatch in constant table! + RUN: not llvm-dis -disable-output %p/Inputs/invalid-array-element-type.bc 2>&1 | \ RUN: FileCheck --check-prefix=ELEMENT-TYPE %s RUN: not llvm-dis -disable-output %p/Inputs/invalid-vector-element-type.bc 2>&1 | \ |

