[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