diff options
Diffstat (limited to 'llvm/lib/Bitcode/Reader/BitcodeReader.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Reader/BitcodeReader.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp index 6a3012d..63b084c 100644 --- a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp +++ b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp @@ -5076,8 +5076,10 @@ Error BitcodeReader::parseFunctionBody(Function *F) { cast<InvokeInst>(I)->setCallingConv( static_cast<CallingConv::ID>(CallingConv::MaxID & CCInfo)); cast<InvokeInst>(I)->setAttributes(PAL); - if (Error Err = propagateAttributeTypes(cast<CallBase>(I), ArgTyIDs)) + if (Error Err = propagateAttributeTypes(cast<CallBase>(I), ArgTyIDs)) { + I->deleteValue(); return Err; + } break; } @@ -5171,8 +5173,10 @@ Error BitcodeReader::parseFunctionBody(Function *F) { cast<CallBrInst>(I)->setCallingConv( static_cast<CallingConv::ID>((0x7ff & CCInfo) >> bitc::CALL_CCONV)); cast<CallBrInst>(I)->setAttributes(PAL); - if (Error Err = propagateAttributeTypes(cast<CallBase>(I), ArgTyIDs)) + if (Error Err = propagateAttributeTypes(cast<CallBase>(I), ArgTyIDs)) { + I->deleteValue(); return Err; + } break; } case bitc::FUNC_CODE_INST_UNREACHABLE: // UNREACHABLE @@ -5784,8 +5788,10 @@ Error BitcodeReader::parseFunctionBody(Function *F) { TCK = CallInst::TCK_NoTail; cast<CallInst>(I)->setTailCallKind(TCK); cast<CallInst>(I)->setAttributes(PAL); - if (Error Err = propagateAttributeTypes(cast<CallBase>(I), ArgTyIDs)) + if (Error Err = propagateAttributeTypes(cast<CallBase>(I), ArgTyIDs)) { + I->deleteValue(); return Err; + } if (FMF.any()) { if (!isa<FPMathOperator>(I)) return error("Fast-math-flags specified for call without " |