Issue 149180
Summary [DirectX] Crash in DXILLegalizePass.cpp on legalizeLoadStoreOnArrayAllocas
Labels backend:DirectX
Assignees Icohedron
Reporter farzonl
    This issue is new introduced in https://github.com/llvm/llvm-project/commit/09f7cab9a34ed0837375f1677a4322d40b37ed5f

LLVM IR repro
```llvm
@private_array = private constant [3 x float] [float 1.0, float 2.0, float 3.0], align 4

define void @anchor_function() #0 {
entry:
  %1 = load [3 x float], ptr @private_array, align 4
  ret void
}
```

Crash stack
```gdb
Stack dump:
0.      Program arguments: /home/kaitlinpeng/llvm-build-debug/bin/llc /home/kaitlinpeng/llvm-project/llvm/test/CodeGen/DirectX/finalize_linkage.ll --filetype=asm -o -
1.      Running pass 'Function Pass Manager' on module '/home/kaitlinpeng/llvm-project/llvm/test/CodeGen/DirectX/finalize_linkage.ll'.
2. Running pass 'DXIL Legalizer' on function '@anchor_function'
#0 0x000055f8e3b760c1 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /home/kaitlinpeng/llvm-project/llvm/lib/Support/Unix/Signals.inc:834:11
#1 0x000055f8e3b7664b PrintStackTraceSignalHandler(void*) /home/kaitlinpeng/llvm-project/llvm/lib/Support/Unix/Signals.inc:918:1
#2 0x000055f8e3b74396 llvm::sys::RunSignalHandlers() /home/kaitlinpeng/llvm-project/llvm/lib/Support/Signals.cpp:104:5
#3 0x000055f8e3b76dcd SignalHandler(int, siginfo_t*, void*) /home/kaitlinpeng/llvm-project/llvm/lib/Support/Unix/Signals.inc:426:38
#4 0x00007f6c98cbc330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#5 0x00007f6c98d15b2c pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x9eb2c)
#6 0x00007f6c98cbc27e raise (/lib/x86_64-linux-gnu/libc.so.6+0x4527e)
#7 0x00007f6c98c9f8ff abort (/lib/x86_64-linux-gnu/libc.so.6+0x288ff)
#8 0x00007f6c98c9f81b (/lib/x86_64-linux-gnu/libc.so.6+0x2881b)
#9 0x00007f6c98cb2517 (/lib/x86_64-linux-gnu/libc.so.6+0x3b517)
#10 0x000055f8e1249e0c legalizeLoadStoreOnArrayAllocas(llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&) /home/kaitlinpeng/llvm-project/llvm/lib/Target/DirectX/DXILLegalizePass.cpp:587:44
#11 0x000055f8e124ce4d void std::__invoke_impl<void, void (*&)(llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&), llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&>(std::__invoke_other, void (*&)(llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&), llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:61:7
#12 0x000055f8e124cddd std::enable_if<is_invocable_r_v<void, void (*&)(llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&), llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&>, void>::type std::__invoke_r<void, void (*&)(llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&), llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&>(void (*&)(llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&), llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/invoke.h:117:5
#13 0x000055f8e124cd05 std::_Function_handler<void (llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&), void (*)(llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&)>::_M_invoke(std::_Any_data const&, llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&) /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:290:2
#14 0x000055f8e124fb3d std::function<void (llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&)>::operator()(llvm::Instruction&, llvm::SmallVectorImpl<llvm::Instruction*>&, llvm::DenseMap<llvm::Value*, llvm::Value*, llvm::DenseMapInfo<llvm::Value*, void>, llvm::detail::DenseMapPair<llvm::Value*, llvm::Value*>>&) const /usr/bin/../lib/gcc/x86_64-linux-gnu/13/../../../../include/c++/13/bits/std_function.h:591:2
#15 0x000055f8e124740f (anonymous namespace)::DXILLegalizationPipeline::runLegalizationPipeline(llvm::Function&) /home/kaitlinpeng/llvm-project/llvm/lib/Target/DirectX/DXILLegalizePass.cpp:618:35
#16 0x000055f8e124b199 (anonymous namespace)::DXILLegalizeLegacy::runOnFunction(llvm::Function&) /home/kaitlinpeng/llvm-project/llvm/lib/Target/DirectX/DXILLegalizePass.cpp:680:21
#17 0x000055f8e2b539ea llvm::FPPassManager::runOnFunction(llvm::Function&) /home/kaitlinpeng/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1398:23
#18 0x000055f8e2b583c2 llvm::FPPassManager::runOnModule(llvm::Module&) /home/kaitlinpeng/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1444:16
#19 0x000055f8e2b5429b (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/kaitlinpeng/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1513:23
#20 0x000055f8e2b53e1a llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/kaitlinpeng/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:531:16
#21 0x000055f8e2b586a1 llvm::legacy::PassManager::run(llvm::Module&) /home/kaitlinpeng/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1640:3
#22 0x000055f8e0f28c9a compileModule(char**, llvm::LLVMContext&) /home/kaitlinpeng/llvm-project/llvm/tools/llc/llc.cpp:761:9
#23 0x000055f8e0f26d71 main /home/kaitlinpeng/llvm-project/llvm/tools/llc/llc.cpp:404:13
#24 0x00007f6c98ca11ca (/lib/x86_64-linux-gnu/libc.so.6+0x2a1ca)
#25 0x00007f6c98ca128b __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2a28b)
#26 0x000055f8e0f26525 _start (/home/kaitlinpeng/llvm-build-debug/bin/llc+0x3409525)
FileCheck error: '<stdin>' is empty.
FileCheck command line: /home/kaitlinpeng/llvm-build-debug/bin/FileCheck /home/kaitlinpeng/llvm-project/llvm/test/CodeGen/DirectX/finalize_linkage.ll --check-prefixes=CHECK-LLC
```
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to