diff options
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 1 | ||||
-rw-r--r-- | llvm/test/Bitcode/Inputs/invalid-nonpointer-atomicrmw.bc | bin | 0 -> 452 bytes | |||
-rw-r--r-- | llvm/test/Bitcode/invalid.test | 5 |
3 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 4eda9d6c9ad..79d358a3281 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -5340,6 +5340,7 @@ std::error_code BitcodeReader::parseFunctionBody(Function *F) { unsigned OpNum = 0; Value *Ptr, *Val; if (getValueTypePair(Record, OpNum, NextValueNo, Ptr) || + !isa<PointerType>(Ptr->getType()) || popValue(Record, OpNum, NextValueNo, cast<PointerType>(Ptr->getType())->getElementType(), Val) || OpNum+4 != Record.size()) diff --git a/llvm/test/Bitcode/Inputs/invalid-nonpointer-atomicrmw.bc b/llvm/test/Bitcode/Inputs/invalid-nonpointer-atomicrmw.bc Binary files differnew file mode 100644 index 00000000000..2148fb216d7 --- /dev/null +++ b/llvm/test/Bitcode/Inputs/invalid-nonpointer-atomicrmw.bc diff --git a/llvm/test/Bitcode/invalid.test b/llvm/test/Bitcode/invalid.test index 2c2ae8f326a..e7e78b3af5a 100644 --- a/llvm/test/Bitcode/invalid.test +++ b/llvm/test/Bitcode/invalid.test @@ -227,3 +227,8 @@ RUN: not llvm-dis -disable-output %p/Inputs/invalid-nonpointer-storeatomic.bc 2> RUN: FileCheck --check-prefix=NONPOINTER-STOREATOMIC %s NONPOINTER-STOREATOMIC: Invalid record + +RUN: not llvm-dis -disable-output %p/Inputs/invalid-nonpointer-atomicrmw.bc 2>&1 | \ +RUN: FileCheck --check-prefix=NONPOINTER-ATOMICRMW %s + +NONPOINTER-ATOMICRMW: Invalid record |