[llvm] [IR] Fix C API after getTerminator() change (PR #189922)
via llvm-commits
llvm-commits at lists.llvm.org
Wed Apr 1 02:19:36 PDT 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-ir
Author: Alexis Engelke (aengelke)
<details>
<summary>Changes</summary>
The C API function LLVMGetBasicBlockTerminator should return NULL when
the basic block is not well-formed.
---
Full diff: https://github.com/llvm/llvm-project/pull/189922.diff
2 Files Affected:
- (modified) llvm/lib/IR/Core.cpp (+1-1)
- (modified) llvm/tools/llvm-c-test/echo.cpp (+5)
``````````diff
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;
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/189922
More information about the llvm-commits
mailing list