<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/149180>149180</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[DirectX] Crash in DXILLegalizePass.cpp on legalizeLoadStoreOnArrayAllocas
</td>
</tr>
<tr>
<th>Labels</th>
<td>
backend:DirectX
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
Icohedron
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
farzonl
</td>
</tr>
</table>
<pre>
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
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWltv4zYW_jXMCxGDF10f_KCxx9tgEzSYmR30zaAoyuaGIgWSSpP--gUl-aakm_V00xSog0CWSPHwO1dSPIc5JzdaiDmIPwFCbrjZisoaDQgB8fKKdX5r7Lxm9jej1VVpquf5t610UDrXCSgd1OJXKLW3puq4qKDUcOt96wAtAFkBstpIv-3KGTcNICulHnc_1601_xbcA7LipmlkuEF5nXJW5oxGokIZTWka1zhJUxZRQqoIlTQVVVwDVABU3N5-v4M3X6AVrTWhKUHDfz8LKkCEWisfmRdrZi17hoAu4dgCudHOM-0hiD9R-ARrZZgH8TI89_cQzxAgi6EDkuMHOkMgXoZnpuRGw2jAU4laagEfjawgiBDTfGvsuu409zIINAMkh4BQBEH6CaBCaG-fg5xQASEgMe4BKsOqKagwVestnHJ0CgFCK3w_fcCTLo9FMiBcWOa20HnGH447N1UJUPE1NMOqa9oBE5rB_u_emo1lDWR20zVC-6BaCMhqaxoByOqBSa-kboXe7DRbdlJV15Uou9BUSt138P8-6GAOo5F44cLTwlTiHyKQWEoruP8FkFUtNVPyN7FWUj-wjZgpBa-va6mEf24FoEvmGnht4DVABR7Z-NJpLfUGtsw5CEi6GvUC70PDHdNsIywgKTQaNqbqlAhvvSdkQNIZQAWZvcC2_OXmFt6KTT9iB2pnSD2sV8wrDSoN1oWeEEIojutM0DJNEMewx0cLQAv37Iabeyu173X-zTIuAMkOL1n269o4bwVrAEmClUntB-s9RxxKloCsvnZta2xo_peWT6FBbjRTbiY1B7TIaARogfGAHk_RJ1EJJ1CH8T8xXakgnKy3eFK8E74cZwHfAI9M4EU0T14T7pdOn6B0e-__I_h2wHgbXBSjILh4AEancqt4BaeC6pW4gE5upK7N2vdCW8D3lV9EEkALmg04oxFnWic8z3jJaQiHQTgjtacsWSfRtZK6e7re6G7o4DNnZgkgn9BTFFOKAMkHevEJvQrHJeGw9VsrWLV-kEqdRzwXJeF74skULEkFtEw6cS5kkoo91fSUal5ndQ1Zaaw_jyrJsrreU81eUMXl2fRwuaeXT3gnMU7Po0fLGKd7evgkLmES5QJxqMYYd2tY9dUbK37WRVjYCqUMZ-4kKN1o5203Brs-KB36vjZMqe-Ce2NvmlYBuvidcQWgn1-MXgrtxB1rT4Z9Z6oTo4e81bojcKNr87tEejcLsx-PrIRnUp1SuWfSngOFft4x9WMO_I3ZjfAnq1VYgHbrT1gfx5ATZ2nw6GhUKZ6olIuoGrY_zlcDyPVa6kfzINZyUMsQaxbjJimYUzEgv6j6TFWfvnGR2FsSC9fspV0avw1r48UiLxb5MeG6c3b_kTSb7YPyhvPXF1lMdy9OLlJz1VUh9HNAPvX_w8ul9K7vDwY_2wJaJBjQYvxewGQaxavqKIALzUol1rIGdCFd7zW8b7Hrx0s8v3jPh8bzwzz9S-Hj_5Wth73Y6cVOP3bfcTG7i9n9XTYXGKeHcylMX-wuUHwUo3ensOvteEo1hGp48Y8f8I-TKHMJMWeLcLePWN-NW4eTL8ZCP68r5tmQOnohh4uE_2Ihyflqnx3pAxPJUbiOgSmaBKa6pEefPfu0yiUe_UFnMq2wzBs7ZEAucjzXZfpo87GOE-f4yHHiieOkEaqDfzBt9HNjOgc1a4Rr-6RiPgricJ7MAtl72QoltRh6badf7Ty2ldU-z_knnHMnfc6P7vYwyYTjEuf5GRyL8Muf97z-rA_MfBiHWR8Ld1nX9JhDUsY0F-zIMFf3YeguR_7-fNx8AWQ1SO1o4l3ek-ZBO4SO2LMJ9oxy8j9gv-tz_CfId03vhDuK-kx3MuLOJ7gjkpdvWdXdX4aZGNMjJRA0NSCBjw1IHXnAEbEhso9c_InoY4qPNEHw1IISht8G_xHAcRIFv91J_eToFtUk43nYnjatVGJvEnzLbL_UTFab29vvdwujvXjyPwTXG6PcUNkzXEeMaX-6PKZ9CZ1ATKoUw4ZJ_X-aLeqrIPBOIpP6AoYxZ2emwRnmbJ-2JvGUIMlKuF6HMWvnmfXrkZmzpiDZIdNOkqmIYhLDgfhI9-xSqyEBH6E8JvEw0UoqsdgK_gCFtcYONVwpoAvnK6n77UYKpYOiaf3z7GQAN03DdAXHBfv82q8DqXeuAONhkuvWilo-CQfocvHT58U_r29vF8flblfVnFY5zdmVmOM0JkmeRii92s5xwqOqwiIWuOQoi0ki6jKNMOZxFLGKXMk5QSRGKU4IIpSkszKpMc4FI2WVsJJkIEKiYVLNAgczYzdXfZ3kHEc5ztCVYqVQbiy1LBl_EDp8b-zZ6ksu7XwU5MaBCCnpvDuQ89KrvlZzNyZewqGqT2r42loPjX6ryuKqs2p-dtFmz1jwyJG3xzn5TwAAAP__-W7MHg">