nikic wrote:
Crash reproducer:
```llvm
; RUN: opt -S
-passes="loop-mssa(loop-simplifycfg,licm<no-allowspeculation>,loop-rotate,simple-loop-unswitch)"
< %s
target datalayout =
"e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-linux-gnu"
define void
@_ZN4ncnnL8rnn_int8ERKNS_3MatERS0_iS2_PKfS2_S2_S5_S3_RKNS_6OptionE.omp_outlined(ptr
%0) {
%2 = alloca i32, align 4
call void @llvm.lifetime.start.p0(ptr %2)
br label %3
3: ; preds = %5, %1
%4 = load i32, ptr null, align 4
br label %.preheader
.preheader: ; preds = %7, %3
%.049 = phi i32 [ %8, %7 ], [ 0, %3 ]
br i1 false, label %7, label %5
5: ; preds = %.preheader
%6 = load ptr, ptr %0, align 8
store float 0.000000e+00, ptr %6, align 4
br label %3
7: ; preds = %.preheader
%8 = add i32 0, 0
br label %.preheader
}
; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem:
readwrite)
declare void @llvm.lifetime.start.p0(ptr captures(none)) #0
attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem:
readwrite) }
```
```
opt:
/home/npopov/repos/llvm-project/llvm/include/llvm/Support/GenericDomTree.h:403:
DomTreeNodeBase<NodeT> *llvm::DominatorTreeBase<llvm::BasicBlock,
false>::getNode(const NodeT *) const [NodeT = llvm::BasicBlock, IsPostDom =
false]: Assertion `(!BB || Parent == NodeTrait::getParent(const_cast<NodeT
*>(BB))) && "cannot get DomTreeNode of block with different parent"' 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: build/bin/opt -S
-passes=loop-mssa(loop-simplifycfg,licm<no-allowspeculation>,loop-rotate,simple-loop-unswitch)
test.ll
1. Running pass
"function(loop-mssa(loop-simplifycfg,licm<no-allowspeculation>,loop-rotate<header-duplication;no-prepare-for-lto>,simple-loop-unswitch<no-nontrivial;trivial>))"
on module "test.ll"
2. Running pass
"loop-mssa(loop-simplifycfg,licm<no-allowspeculation>,loop-rotate<header-duplication;no-prepare-for-lto>,simple-loop-unswitch<no-nontrivial;trivial>)"
on function
"_ZN4ncnnL8rnn_int8ERKNS_3MatERS0_iS2_PKfS2_S2_S5_S3_RKNS_6OptionE.omp_outlined"
#0 0x0000000004a159f8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int)
(build/bin/opt+0x4a159f8)
#1 0x0000000004a12fc5 llvm::sys::RunSignalHandlers() (build/bin/opt+0x4a12fc5)
#2 0x0000000004a16a91 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
#3 0x00007f149ea28bb0 __restore_rt (/lib64/libc.so.6+0x19bb0)
#4 0x00007f149ea8209c __pthread_kill_implementation (/lib64/libc.so.6+0x7309c)
#5 0x00007f149ea28a7e gsignal (/lib64/libc.so.6+0x19a7e)
#6 0x00007f149ea106d0 abort (/lib64/libc.so.6+0x16d0)
#7 0x00007f149ea10639 __assert_perror_fail (/lib64/libc.so.6+0x1639)
#8 0x000000000501d649 llvm::DominatorTreeBase<llvm::BasicBlock,
false>::dominates(llvm::BasicBlock const*, llvm::BasicBlock const*) const
(build/bin/opt+0x501d649)
#9 0x00000000052b1208 (anonymous
namespace)::ClobberWalker::findClobber(llvm::BatchAAResults&,
llvm::MemoryAccess*, (anonymous namespace)::UpwardsMemoryQuery&, unsigned int&)
MemorySSA.cpp:0:0
#10 0x00000000052b2887
llvm::MemorySSA::ClobberWalkerBase::getClobberingMemoryAccessBase(llvm::MemoryAccess*,
llvm::BatchAAResults&, unsigned int&, bool, bool) (build/bin/opt+0x52b2887)
#11 0x00000000052b6c05
llvm::MemorySSA::SkipSelfWalker::getClobberingMemoryAccess(llvm::MemoryAccess*,
llvm::BatchAAResults&) MemorySSA.cpp:0:0
#12 0x00000000053f55a8 pointerInvalidatedByLoop(llvm::MemorySSA*,
llvm::MemoryUse*, llvm::Loop*, llvm::Instruction&,
llvm::SinkAndHoistLICMFlags&, bool) LICM.cpp:0:0
#13 0x00000000053ee957 llvm::canSinkOrHoistInst(llvm::Instruction&,
llvm::AAResults*, llvm::DominatorTree*, llvm::Loop*, llvm::MemorySSAUpdater&,
bool, llvm::SinkAndHoistLICMFlags&, llvm::OptimizationRemarkEmitter*)
(build/bin/opt+0x53ee957)
```
https://github.com/llvm/llvm-project/pull/157559
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits