[BitCode] Don't allow constants of void type.

llvm-svn: 271848
This commit is contained in:
Filipe Cabecinhas
2016-06-05 18:43:17 +00:00
parent 3e45d77835
commit 2849b48fea
3 changed files with 8 additions and 0 deletions

View File

@@ -2868,6 +2868,7 @@ std::error_code BitcodeReader::parseConstants() {
// Read a record.
Record.clear();
Type *VoidType = Type::getVoidTy(Context);
Value *V = nullptr;
unsigned BitCode = Stream.readRecord(Entry.ID, Record);
switch (BitCode) {
@@ -2880,6 +2881,8 @@ std::error_code BitcodeReader::parseConstants() {
return error("Invalid record");
if (Record[0] >= TypeList.size() || !TypeList[Record[0]])
return error("Invalid record");
if (TypeList[Record[0]] == VoidType)
return error("Invalid constant type");
CurTy = TypeList[Record[0]];
continue; // Skip the ValueList manipulation.
case bitc::CST_CODE_NULL: // NULL