[llvm] c5363f2 - [IR] Fix C API after getTerminator() change (#189922)

via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 1 02:51:34 PDT 2026


Author: Alexis Engelke
Date: 2026-04-01T09:51:29Z
New Revision: c5363f2166710b0c6e728d5ee11efc99ccf42d87

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

LOG: [IR] Fix C API after getTerminator() change (#189922)

The C API function LLVMGetBasicBlockTerminator should return NULL when
the basic block is not well-formed.

Added: 
    

Modified: 
    llvm/lib/IR/Core.cpp
    llvm/tools/llvm-c-test/echo.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp
index a4e03de7b615c..ba5d1c5c486d6 100644
--- a/llvm/lib/IR/Core.cpp
+++ b/llvm/lib/IR/Core.cpp
@@ -2880,7 +2880,7 @@ LLVMValueRef LLVMGetBasicBlockParent(LLVMBasicBlockRef BB) {
 }
 
 LLVMValueRef LLVMGetBasicBlockTerminator(LLVMBasicBlockRef BB) {
-  return wrap(unwrap(BB)->getTerminator());
+  return wrap(unwrap(BB)->getTerminatorOrNull());
 }
 
 unsigned LLVMCountBasicBlocks(LLVMValueRef FnRef) {

diff  --git a/llvm/tools/llvm-c-test/echo.cpp b/llvm/tools/llvm-c-test/echo.cpp
index 7b045314207b8..5ed1eaa459d88 100644
--- a/llvm/tools/llvm-c-test/echo.cpp
+++ b/llvm/tools/llvm-c-test/echo.cpp
@@ -1119,6 +1119,8 @@ struct FunCloner {
 
     LLVMContextRef Ctx = LLVMGetModuleContext(M);
     LLVMBasicBlockRef BB = LLVMAppendBasicBlockInContext(Ctx, Fun, Name);
+    if (LLVMGetBasicBlockTerminator(BB) != nullptr)
+      report_fatal_error("Basic block must not have terminator");
     return BBMap[Src] = BB;
   }
 
@@ -1161,6 +1163,9 @@ struct FunCloner {
       Cur = Next;
     }
 
+    if (LLVMGetBasicBlockTerminator(BB) != LLVMGetLastInstruction(BB))
+      report_fatal_error("Basic block terminator mismatch");
+
     LLVMDisposeBuilder(Builder);
     return BB;
   }


        


More information about the llvm-commits mailing list