[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