[llvm] [OMPIRBuilder] Avoid crash in BasicBlock::splice. (PR #154987)

Michael Kruse via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 29 07:58:42 PDT 2025


================
@@ -307,7 +307,14 @@ void llvm::spliceBB(IRBuilderBase::InsertPoint IP, BasicBlock *New,
 
   // Move instructions to new block.
   BasicBlock *Old = IP.getBlock();
-  if (!Old->empty() || !New->empty())
+  // If the Old block is empty then there are no instructions to move. But in
+  // the new debug scheme, it could have trailing debug records which will be
+  // moved to New in spliceDebugInfoEmptyBlock. We dont want that for 2 reasons:
+  // 1. If New is also empty, it could cause a crash.
----------------
Meinersbur wrote:

```suggestion
  // 1. If New is also empty, `BasicBlock::splice` crashes
```
[nit] to be specific. If it doesn't crash anymore, we know it has been fixed.

https://github.com/llvm/llvm-project/pull/154987


More information about the llvm-commits mailing list