[llvm] [AArch64] Run optimizeTerminators earlier too. (PR #170907)

Arthur Eubanks via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 9 13:02:02 PST 2025


aeubanks wrote:

hi, this is causing crashes:

```
$ cat /tmp/a.ll
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32"
target triple = "aarch64-unknown-linux-android29"

declare ptr @llvm.ptr.annotation.p0.p0(ptr, ptr, ptr, i32, ptr) #0

define i1 @foo(i1 %arg) {
bb:
  br i1 %arg, label %bb1, label %bb2

bb1:                                              ; preds = %bb
  ret i1 false

bb2:                                              ; preds = %bb
  %call = call ptr @llvm.ptr.annotation.p0.p0(ptr poison, ptr null, ptr null, i32 0, ptr null)
  store ptr null, ptr %call, align 8
  %call3 = call ptr @llvm.ptr.annotation.p0.p0(ptr poison, ptr null, ptr null, i32 0, ptr null)
  %load = load ptr, ptr %call3, align 8
  %icmp = icmp eq ptr %load, null
  br i1 %icmp, label %bb6, label %bb4

bb4:                                              ; preds = %bb2
  %call5 = call ptr @llvm.ptr.annotation.p0.p0(ptr null, ptr null, ptr null, i32 0, ptr null)
  br label %bb6

bb6:                                              ; preds = %bb4, %bb2
  %icmp7 = icmp eq ptr null, null
  ret i1 %icmp7
}
$ llc -o /dev/null /tmp/a.ll
llc: ../../llvm/include/llvm/Support/GenericDomTree.h:535: NodeT *llvm::DominatorTreeBase<llvm::MachineBasicBlock, false>::findNearestCommonDominator(NodeT *, NodeT *) const [NodeT = llvm::MachineBasicBlock, IsPostDom = false]: Assertion `NodeB && "B must be in the tree"' failed.
```

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


More information about the llvm-commits mailing list