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; }