[llvm] d7645f4 - [Bitcode] Delete instruction on error

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 11 01:56:50 PST 2022


Author: Nikita Popov
Date: 2022-03-11T10:56:43+01:00
New Revision: d7645f4ef866059da66442308c4c015c55b84e02

URL: https://github.com/llvm/llvm-project/commit/d7645f4ef866059da66442308c4c015c55b84e02
DIFF: https://github.com/llvm/llvm-project/commit/d7645f4ef866059da66442308c4c015c55b84e02.diff

LOG: [Bitcode] Delete instruction on error

As these errors are detected after the instruction has already been
created (but before it has been inserted into the function), we
also need to delete it.

Added: 
    

Modified: 
    llvm/lib/Bitcode/Reader/BitcodeReader.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Bitcode/Reader/BitcodeReader.cpp b/llvm/lib/Bitcode/Reader/BitcodeReader.cpp
index 6a3012d256380..63b084c3434f8 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 "


        


More information about the llvm-commits mailing list