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

Reply via email to