[llvm] [SROA] Unfold gep of index phi (round 2) (PR #83494)
Lei Wang via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 6 20:02:38 PST 2024
wlei-llvm wrote:
Hi
Here is the reduced repro:
```
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-redhat-linux-gnu"
define { ptr, i8 } @_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_() {
entry:
%0 = alloca [45 x i8], align 16
br label %if.end30
if.then19: ; No predecessors!
%1 = alloca i8, i64 0, align 16
br label %if.end30
if.end30: ; preds = %if.then19, %entry
%__cs.0 = phi ptr [ %1, %if.then19 ], [ %0, %entry ]
unreachable
lor.lhs.false44: ; No predecessors!
%arrayidx = getelementptr i8, ptr %__cs.0, i64 1
%2 = load i8, ptr %arrayidx, align 1
ret { ptr, i8 } zeroinitializer
}
```
```
opt -passes=sroa reduced.ll -S
Instruction does not dominate all uses!
%0 = alloca i8, i64 0, align 16
%__cs.0.sroa.gep = getelementptr i8, ptr %0, i64 1
LLVM ERROR: Broken module found, compilation aborted!
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /home/wlei/local/upstream/llvm-build/bin/opt -passes=sroa reduced.ll -S
#0 0x00007f6d713f9428 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/wlei/local/upstream/llvm-project/llvm/lib/Support/Unix/Signals.inc:723:13
#1 0x00007f6d713f74d0 llvm::sys::RunSignalHandlers() /home/wlei/local/upstream/llvm-project/llvm/lib/Support/Signals.cpp:106:18
#2 0x00007f6d713f9afd SignalHandler(int) /home/wlei/local/upstream/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
#3 0x00007f6d74c12d20 __restore_rt (/lib64/libpthread.so.0+0x12d20)
#4 0x00007f6d7024e52f raise (/lib64/libc.so.6+0x4e52f)
#5 0x00007f6d70221e65 abort (/lib64/libc.so.6+0x21e65)
#6 0x00007f6d7134f6f6 llvm::report_fatal_error(llvm::Twine const&, bool) /home/wlei/local/upstream/llvm-project/llvm/lib/Support/ErrorHandling.cpp:125:5
#7 0x00007f6d7134f526 (/data/users/wlei/upstream/llvm-build/bin/../lib/libLLVMSupport.so.19.0git+0x14f526)
#8 0x00007f6d71b012de (/data/users/wlei/upstream/llvm-build/bin/../lib/libLLVMCore.so.19.0git+0x5012de)
#9 0x00007f6d7533c66d llvm::detail::PassModel<llvm::Module, llvm::VerifierPass, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/wlei/local/upstream/llvm-project/llvm/include/llvm/IR/PassManagerInternal.h:90:5
#10 0x00007f6d71aca3eb llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) /home/wlei/local/upstream/llvm-project/llvm/include/llvm/IR/PassManager.h:247:10
#11 0x00007f6d75334a4d llvm::SmallPtrSetImplBase::isSmall() const /home/wlei/local/upstream/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:196:33
#12 0x00007f6d75334a4d llvm::SmallPtrSetImplBase::~SmallPtrSetImplBase() /home/wlei/local/upstream/llvm-project/llvm/include/llvm/ADT/SmallPtrSet.h:84:10
#13 0x00007f6d75334a4d llvm::PreservedAnalyses::~PreservedAnalyses() /home/wlei/local/upstream/llvm-project/llvm/include/llvm/IR/Analysis.h:109:7
#14 0x00007f6d75334a4d llvm::runPassPipeline(llvm::StringRef, llvm::Module&, llvm::TargetMachine*, llvm::TargetLibraryInfoImpl*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::ToolOutputFile*, llvm::StringRef, llvm::ArrayRef<llvm::PassPlugin>, llvm::ArrayRef<std::function<void (llvm::PassBuilder&)>>, llvm::opt_tool::OutputKind, llvm::opt_tool::VerifierKind, bool, bool, bool, bool, bool, bool, bool) /home/wlei/local/upstream/llvm-project/llvm/tools/opt/NewPMDriver.cpp:547:3
#15 0x00007f6d753410ee optMain /home/wlei/local/upstream/llvm-project/llvm/tools/opt/optdriver.cpp:737:12
#16 0x00007f6d7023a7e5 __libc_start_main (/lib64/libc.so.6+0x3a7e5)
#17 0x0000000000201c1e _start (/home/wlei/local/upstream/llvm-build/bin/opt+0x201c1e)
Aborted (core dumped)
```
https://github.com/llvm/llvm-project/pull/83494
More information about the llvm-commits
mailing list