-
Notifications
You must be signed in to change notification settings - Fork 15.6k
Description
Reproducer: https://godbolt.org/z/PaGjcrMTa
Testcase:
target datalayout = "e-m:e-p:64:64-p1:64:64-p2:32:32-p3:32:32-p4:64:64-p5:32:32-p6:32:32-p7:160:256:256:32-p8:128:128:128:48-p9:192:256:256:32-i64:64-v16:16-v24:32-v32:32-v48:64-v96:128-v192:256-v256:256-v512:512-v1024:1024-v2048:2048-n32:64-S32-A5-G1-ni:7:8:9"
target triple = "amdgcn-amd-amdhsa"
define void @func_33() {
entry:
br label %BS_LABEL_0
BS_LABEL_0: ; preds = %BS_LABEL_0, %entry
callbr void asm sideeffect "", "!i,!i"()
to label %BS_LABEL_4 [label %BS_LABEL_0, label %BS_LABEL_4]
BS_LABEL_4: ; preds = %BS_LABEL_0, %BS_LABEL_0
ret void
}Dumps:
llc: /root/llvm-project/llvm/include/llvm/Support/GenericDomTreeConstruction.h:927: static void llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::DeleteEdge(DomTreeT&, llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::BatchUpdatePtr, llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr, llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr) [with DomTreeT = llvm::DominatorTreeBase<llvm::BasicBlock, false>; llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::BatchUpdatePtr = llvm::DomTreeBuilder::SemiNCAInfo<llvm::DominatorTreeBase<llvm::BasicBlock, false> >::BatchUpdateInfo*; llvm::DomTreeBuilder::SemiNCAInfo<DomTreeT>::NodePtr = llvm::BasicBlock*]: Assertion `!IsSuccessor(To, From) && "Deleted edge still exists in the CFG!"' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace and instructions to reproduce the bug.
Stack dump:
0. Program arguments: /opt/compiler-explorer/clang-assertions-trunk/bin/llc -o /app/output.s -x86-asm-syntax=intel -O1 <source>
1. Running pass 'Function Pass Manager' on module '<source>'.
2. Running pass 'Fixup each natural loop to have a single exit block' on function '@func_33'
#0 0x0000000004205548 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x4205548)
#1 0x00000000042023f4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#2 0x000072b21aa42520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#3 0x000072b21aa969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#4 0x000072b21aa42476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#5 0x000072b21aa287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#6 0x000072b21aa2871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#7 0x000072b21aa39e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#8 0x00000000036ac527 (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x36ac527)
#9 0x00000000036b29ba void llvm::DomTreeBuilder::ApplyUpdates<llvm::DominatorTreeBase<llvm::BasicBlock, false>>(llvm::DominatorTreeBase<llvm::BasicBlock, false>&, llvm::GraphDiff<llvm::DominatorTreeBase<llvm::BasicBlock, false>::NodePtr, llvm::DominatorTreeBase<llvm::BasicBlock, false>::IsPostDominator>&, llvm::GraphDiff<llvm::DominatorTreeBase<llvm::BasicBlock, false>::NodePtr, llvm::DominatorTreeBase<llvm::BasicBlock, false>::IsPostDominator>*) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x36b29ba)
#10 0x00000000036b39fb llvm::DominatorTreeBase<llvm::BasicBlock, false>::applyUpdates(llvm::ArrayRef<llvm::cfg::Update<llvm::BasicBlock*>>) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x36b39fb)
#11 0x0000000002b61c35 llvm::GenericDomTreeUpdater<llvm::DomTreeUpdater, llvm::DominatorTree, llvm::PostDominatorTree>::applyUpdates(llvm::ArrayRef<llvm::cfg::Update<llvm::BasicBlock*>>) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x2b61c35)
#12 0x000000000425da75 llvm::SplitCallBrEdge(llvm::BasicBlock*, llvm::BasicBlock*, unsigned int, llvm::DomTreeUpdater*, llvm::GenericCycleInfo<llvm::GenericSSAContext<llvm::Function>>*, llvm::LoopInfo*, bool*) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x425da75)
#13 0x00000000044639ba unifyLoopExits(llvm::DominatorTree&, llvm::LoopInfo&, llvm::Loop*) UnifyLoopExits.cpp:0:0
#14 0x0000000004466112 runImpl(llvm::LoopInfo&, llvm::DominatorTree&) UnifyLoopExits.cpp:0:0
#15 0x000000000373f846 llvm::FPPassManager::runOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x373f846)
#16 0x000000000373fbf1 llvm::FPPassManager::runOnModule(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x373fbf1)
#17 0x000000000374045f llvm::legacy::PassManagerImpl::run(llvm::Module&) (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x374045f)
#18 0x00000000008fccd4 compileModule(char**, llvm::LLVMContext&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&) llc.cpp:0:0
#19 0x00000000007c6ef9 main (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x7c6ef9)
#20 0x000072b21aa29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#21 0x000072b21aa29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#22 0x00000000008f1ed5 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/llc+0x8f1ed5)
Program terminated with signal: SIGSEGV
Compiler returned: 139