<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/83005>83005</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
AMDGPU backend fails when using O0 (cannot select load)
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mame98
</td>
</tr>
</table>
<pre>
While playing around with different targets, I noticed a crash when using the `amdgcn` target with the `-O0` option.
## Error
```
fatal error: error in backend: Cannot select: 0x55a4f31d1f40: i32,ch = load<(dereferenceable load (s32) from %ir.7)> # D:1 0x55a4f31d1ed0, 0x55a4f31d2410, undef:i64
0x55a4f31d2410: i64 = bitcast 0x55a4f31d1d10
0x55a4f31d1d10: v2i32 = BUILD_VECTOR FrameIndex:i32<1>, 0x55a4f31d22c0
0x55a4f31d1bc0: i32 = FrameIndex<1>
0x55a4f31d22c0: i32,ch = load<(dereferenceable invariant load (s32), addrspace 4)> 0x55a4f31d1d80:1, 0x55a4f31d2250, undef:i64
0x55a4f31d2250: i64 = add nuw 0x55a4f31d1d80, Constant:i64<68>
0x55a4f31d1d80: i64,ch = CopyFromReg 0x55a4f31646e0, Register:i64 %3
0x55a4f31d1b50: i64 = Register %3
0x55a4f31d21e0: i64 = Constant<68>
0x55a4f31d1df0: i64 = undef
0x55a4f31d1df0: i64 = undef
In function: add
```
## Stack Dump
```
0. Program arguments: clang simple.c -O0 -S -o- -target amdgcn
1. <eof> parser at end of file
2. Code generation
3. Running pass 'CallGraph Pass Manager' on module 'simple.c'.
4. Running pass 'AMDGPU DAG->DAG Pattern Instruction Selection' on function '@add'
#0 0x00007fb97e21f503 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/libLLVM-16.so+0xe1f503)
#1 0x00007fb97e21c7bf llvm::sys::RunSignalHandlers() (/usr/lib/libLLVM-16.so+0xe1c7bf)
#2 0x00007fb97e108d9a llvm::CrashRecoveryContext::HandleExit(int) (/usr/lib/libLLVM-16.so+0xd08d9a)
#3 0x00007fb97e2158d4 llvm::sys::Process::Exit(int, bool) (/usr/lib/libLLVM-16.so+0xe158d4)
#4 0x000055a4f2032463 (/usr/bin/clang-16+0xf463)
#5 0x00007fb97e11f002 llvm::report_fatal_error(llvm::Twine const&, bool) (/usr/lib/libLLVM-16.so+0xd1f002)
#6 0x00007fb97ecfad4a llvm::SelectionDAGISel::CannotYetSelect(llvm::SDNode*) (/usr/lib/libLLVM-16.so+0x18fad4a)
#7 0x00007fb97ecfd7ba llvm::SelectionDAGISel::SelectCodeCommon(llvm::SDNode*, unsigned char const*, unsigned int) (/usr/lib/libLLVM-16.so+0x18fd7ba)
#8 0x00007fb97ecf7f5c llvm::SelectionDAGISel::DoInstructionSelection() (/usr/lib/libLLVM-16.so+0x18f7f5c)
#9 0x00007fb97ed0268c llvm::SelectionDAGISel::CodeGenAndEmitDAG() (/usr/lib/libLLVM-16.so+0x190268c)
#10 0x00007fb97ed0592d llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (/usr/lib/libLLVM-16.so+0x190592d)
#11 0x00007fb97ed079b6 (/usr/lib/libLLVM-16.so+0x19079b6)
#12 0x00007fb97e6ea945 (/usr/lib/libLLVM-16.so+0x12ea945)
#13 0x00007fb97e3ab989 llvm::FPPassManager::runOnFunction(llvm::Function&) (/usr/lib/libLLVM-16.so+0xfab989)
#14 0x00007fb97fc2aefa (/usr/lib/libLLVM-16.so+0x282aefa)
#15 0x00007fb97e3ac6ac llvm::legacy::PassManagerImpl::run(llvm::Module&) (/usr/lib/libLLVM-16.so+0xfac6ac)
#16 0x00007fb986ef3fb3 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::Strin
gRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/usr/lib/libclang-cpp.so.16+0x16f3fb3)
#17 0x00007fb987219229 (/usr/lib/libclang-cpp.so.16+0x1a19229)
#18 0x00007fb9860ecfb0 clang::ParseAST(clang::Sema&, bool, bool) (/usr/lib/libclang-cpp.so.16+0x8ecfb0)
#19 0x00007fb98791e7c9 clang::FrontendAction::Execute() (/usr/lib/libclang-cpp.so.16+0x211e7c9)
#20 0x00007fb9878c0d2f clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/libclang-cpp.so.16+0x20c0d2f)
#21 0x00007fb98797bf02 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/libclang-cpp.so.16+0x217bf02)
#22 0x000055a4f2037a6f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/bin/clang-16+0x14a6f)
#23 0x000055a4f203bb10 (/usr/bin/clang-16+0x18b10)
#24 0x00007fb9875ec779 (/usr/lib/libclang-cpp.so.16+0x1dec779)
#25 0x00007fb97e108c87 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/usr/lib/libLLVM-16.so+0xd08c87)
#26 0x00007fb9875f30c4 (/usr/lib/libclang-cpp.so.16+0x1df30c4)
#27 0x00007fb987611431 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/usr/lib/libclang-cpp.so.16+0x1e11431)
#28 0x00007fb9876117ed clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/usr/lib/libclang-cpp.so.16+0
x1e117ed)
#29 0x00007fb9876155dc clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/usr/lib/libclang-cpp.so.16+0x1e155dc)
#30 0x000055a4f203e99f clang_main(int, char**) (/usr/bin/clang-16+0x1b99f)
#31 0x00007fb97ce45cd0 (/usr/lib/libc.so.6+0x27cd0)
#32 0x00007fb97ce45d8a __libc_start_main (/usr/lib/libc.so.6+0x27d8a)
#33 0x000055a4f202fed5 _start (/usr/bin/clang-16+0xced5)
```
## Temp files:
### .c
```
# 1 "<built-in>"
# 1 "simple.c"
int add(int a, int b) {
return a + b;
}
```
### .sh
```
# Crash reproducer for clang version 16.0.6
# Driver args: "simple.c" "-O0" "-S" "-o" "-" "-target" "amdgcn"
# Original command: "/usr/bin/clang-16" "-cc1" "-triple" "amdgcn" "-S" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "simple.c" "-mrelocation-model" "pic" "-pic-level" "1" "-fhalf-no-semantic-interposition" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-resource-dir" "/usr/lib/clang/16" "-O0" "-fdebug-compilation-dir=/home/user/code/hlsl" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcolor-diagnostics" "-faddrsig" "-o" "-" "-x" "c" "simple.c"
"/usr/bin/clang-16" "-cc1" "-triple" "amdgcn" "-S" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "simple.c" "-mrelocation-model" "pic" "-pic-level" "1" "-fhalf-no-semantic-interposition" "-mframe-pointer=all" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-mllvm" "-treat-scalable-fixed-error-as-warning" "-debugger-tuning=gdb" "-O0" "-fdebug-compilation-dir=/home/user/code/hlsl" "-ferror-limit" "19" "-fgnuc-version=4.2.1" "-fcolor-diagnostics" "-faddrsig" "-x" "c" "simple-668c9d.c"
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl1vszj2_zT0xiICQ3i56EWaNJ2Onuffqn1m_tqrytgH4h2wWWP68u1XNiTBNG1TrbTSSiNVDfGxz_mdVx-bkK7jlQC49JZX3nJzQXq9k-qyIQ3k2UUh2dvl_-94DaityRsXFSJK9oKhF653iPGyBAVCI01UBbrz8BrdIiE1p8AQQVSRbodediBQ35nVegfISwLSsIoKLwnGhQO7kejfBYYiW82lWHjBxgtW438ceThC10pJ5Ywnwfhnv5ZEkxqBnRWthgfEBSoI_QsEM2NrIoTUqIMaqDYDwetySeIyCllYxoEZ4RH28JrukBdtUC0J86K1hzMGCqzSFEhRg6UgD2edmZ6jUskGeXjJ1SL1cO5F18hA3njRKpwKARYYYx1HcBzakV4wKL1oxZN40AbNJxlsSWxhFVxT0ukpYxYG-3VoPh6t0DPmEbZrr_64_bF5-vN6_evuAW0VaeBWMHg1oiPsRevQi65nEDGd8Ha4F3RvM8t7ym5gdHKZZXi-qbl4JooToWdGNygJY6prCQUUj2af6p4ZMeFcm-VHBn-Pc-mYnTCGRP8yF4HXaC1Fp4nQI79onWQz7eduyfacjxZYy_Ztq2TzANVxahInYEU8QMU7DWoQYWItmvN3XeNi3y8_uXCicgjOsqNip1SaKlQ66wbrvgvkT6bdClT2gprkNzMIYyeT3KkIj5rQv9Cmb9pPykKwGMDeK1kp0iCiqr4BoTsjhtZEVKjjTVvDgiL_LkD-I_Klj_yxRI01y7IKR1ZetAZZmmhriepAIaIRCIZkiUpewzAZj5PXkgGqQIAiVjlLjEbiQy-EKZAt6Trk4XRN6vpGkXaH7s3ITyJIBcrDKZICNZL1NZhpe8AeTsdKGX_AcPVzc3P_B9qsbnwvut6sbtA90RqUQLei06q3BkePtiAadIOkvScMBy8OjDNwOrrTw1GAgtcgCIK0LPIUcFgugwjV9XPjRSsvWnVv3fBwr7jQ1km_FKHg4ew4SZGXJ9lpBaTxcGIinAttSqmHMw9v-055eFvzYvj_48efP_0wWXTSw1fBK1iRJuMPmMIZJpoW5SlMD7145JUg9W9EsBpUZ-WdK9ZwdcRiR2wYZCwnE7FrsxM-AJXPoN7WUmh41QNlEH_9yrWHs2-ozqwIB0M0U32Zsfi0OySFbvwylbxGhZT1-VYwAhwE8YjA5jkOIhwnkcOr4MLDW5ttfphYNmWcuB5cuqYMyyDAEzUUtFLpJ7vLPw27_DSefr1wAYiaejXG03d0YlaaAydx4NCSsHjq2UPKbFY3t49Qj_62DcY_QA9kB-Hj5v8kAw-vzgUVZlaogyqdoWJp8TWqYdQUorVsGpPlp2GZXdH2hQzRHVF7a7qUb8RqmFl8jgLZTIG0XNIvFdjISbWaFKuzMzfMrCAHSe4gYQFOsq-RGCPegFgJdt1wvVndfAdEbmUcQJiqFcxALHPMzvTnqq6vSMfpVS3pX53j0-2-fh_z4WyIBoEDMZxBTPMiOZeZmeswc-tlAiSPl-cxw3auw8wtfBEp8iyfGG97bzbR_R46FJFe3Im9dU6a7BvGKq1AB1E8RVRSTKAkZ_HCmZ3rMFvO1KMJmQZoDRWhb2NpPyp627T1QVlHxZ-2f_iWgkakg2laFbMEyqgsoqGLGreVhuur4cB11-u2NyVwQt5wUgnZaU67a1FxAWOtnkz5DQgD9QhE0d2dPQx2TlmfTB2T8YtZv2wj98WkH0RUp6ZMUlErPnZv1QOULnFv2tWM7WiK1Rhaa9RpNlB6wf_Vw1OrlRet3baofVFcw9O-OZosYlCSvtZPDGrQ8MXC6Noe5T5w9bAX07ZddHIxbslhYv3pOHy64WQpDnP8LY7ELnA4Zk4IBUDLIpja7N701KvHX27kPEJDnI39iw3-FJrMynLA5I56eQgpzadgtso0bQcPjq0T0F7DZ5X_lHQcWu5T8ThwxGc0YLh0I7xpeQ3q1h7DKDgA9lGVfYz3k1w_CTGwCByIoWuhtCgD7GT8AOaI9FlS8h7YO00-6YNOW89KdqDhWduZkqRElIZPDeFu6VspRd5M1kZrt7MZLjvedTvPkrMTCE-0sWFMEtdg0QxVUYTBl1yyInQCE8eO2ZdA0_Q7ecfsAofjcn5UoVl61lHFHJlICfWbY9L9GfFJWbMaiw348s_KzvvTDM1SB2biKl5GAY2_o7hd4HB0S1gShnEUTiOYKf68bxCGMCXvkt00zkQwN6ZnC82Ej_aXT6auZucVO_wNjcEq5GiczTVOTUv_PY1_l0X3sbq_y-IH7_RHe2VD6vpPoFqO7cj6sIW1hJsdbzx3nmuhcS_7D-w0GMdaKwWnwcX5zFrLJaMfIdtMnp3Kd6LkfWTl_6K1vlMywCo-tczhomdfyiDPx-1pX2L3yHZE2Ug-q2QWee6UTPfyhkK8pCz4ALlBPO4IKWVOzXQvYwwblhH09GSWPXWaKG1Rn8GYZU4nHs1KOi6BLdHA8itlKbDJoeWTy8xf0LT2-tBe0LyjmykL-sk9p5kQIg9jL1oXPa-1z4UNAzyjHy8PRwoX2t63Wm8iMt7FocK6Mr063vkq0L0SyJxorlDhRSPJSzdfqmfhd7sv8Ns9CClolWQ9BYVKqcY72mdQnTnRhskiWCTHJUNCIqIqe6Hr6me--nfB_ulx_yD3D_vP4bJ3_DZe-U4Nd6d4xQWpER33gUHUh44fuFIaHgQo3poDgivARcV4R4oa_FIBHFjUQJRPOu0XUEoF_v5t1myNqSb-MyheclATIiWK-c-k7sEXpIFuTzKJ4Jtos8Pj6NxyjYJ6bOb8RjKoR0LLD1NaTv0ang-kg8LljtSlL6TfQUOE5tTnQoNqZceHIjiKKBVpwG-lpXrRhtT1gUVD9M4HpcTBX2XZ-lQKrQjVXrQ58imF9O0rSi4q36w7CLBVUfWmuvqk5qSbGMHW4IOHgGi_o6QenMBfgfn2ntEnnf9ClOCiOlgWir6qQPm6t8PRpmLFnqigk72i4DO-d8Ws3gyFHG-PoXIM0tLy9ulxw7B8oo2HtztpfLXtO-PjLbX3dttd3R1NNgCuecP30RzmB2IleuqPieRFm3iBF0d_UVlL5bPjAf1AsS_ZePVh8ryOD_R9GB1u2_5Olb9T5USq_A-F_eko95MkozmbBPtsc7tglxHLo5xcwGWYBlm-TDDGF7vLLC9JBAWOwjKOozALYkhwRss0TkhaQnLBL3GA4wDjJIyDKMaLLMjSmNKwTMq0BIa9OICG8HphfLOQqrrgXdfDZRYFwfKiJgXUnf2BB8YCXpAlGpjLzYW6tFlQ9FXnxUHNO90duWiua7gc3xyOSYRKwutu-puOO9uh0ekvKoaX-Di_6FV9udO6ta0M3np4W3G964sFlY0pgjaW7IffKvlP-6Zka_F1Ht5a_P8OAAD__1aP_eQ">