<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/94766>94766</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
AArch64: Clang SVE checks incomplete, resulting in invalid code being accepted and hitting assertion failures in LLVM
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
hvdijk
</td>
</tr>
</table>
<pre>
Please consider the following invalid program that gets rejected as it should:
```c++
__SVInt8_t foo();
void f() { auto v = foo(); } // SVE vector type '__SVInt8_t' cannot be used in a target without sve
```
However, this is rejected because of the definition of `v`, not because of the call to `foo()`, so no clang error is generated for
```c++
__SVInt8_t foo();
void f() { foo(); }
```
But this does not and cannot work, and crashes during codegen, no special options needed:
```
fatal error: error in backend: Invalid size request on a scalable vector.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0. Program arguments: bin/clang -c test.cc
1. <eof> parser at end of file
2. Code generation
3. Running pass 'Function Pass Manager' on module 'test.cc'.
4. Running pass 'AArch64 Instruction Selection' on function '@_Z1fv'
#0 0x0000ac95542f5eb8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (bin/clang+0x3d45eb8)
#1 0x0000ac95542f35e0 llvm::sys::RunSignalHandlers() (bin/clang+0x3d435e0)
#2 0x0000ac9554245d60 llvm::CrashRecoveryContext::HandleExit(int) (bin/clang+0x3c95d60)
#3 0x0000ac95542edd34 llvm::sys::Process::Exit(int, bool) (bin/clang+0x3d3dd34)
#4 0x0000ac95517a72f0 LLVMErrorHandler(void*, char const*, bool) cc1_main.cpp:0:0
#5 0x0000ac95542527dc llvm::report_fatal_error(llvm::Twine const&, bool) (bin/clang+0x3ca27dc)
#6 0x0000ac9554252968 (bin/clang+0x3ca2968)
#7 0x0000ac955429ccdc (bin/clang+0x3ceccdc)
#8 0x0000ac955429cd04 llvm::TypeSize::operator unsigned long() const (bin/clang+0x3cecd04)
#9 0x0000ac955527fa40 llvm::TargetLowering::LowerCallTo(llvm::TargetLowering::CallLoweringInfo&) const (bin/clang+0x4ccfa40)
#10 0x0000ac955528aa44 llvm::SelectionDAGBuilder::lowerInvokable(llvm::TargetLowering::CallLoweringInfo&, llvm::BasicBlock const*) (bin/clang+0x4cdaa44)
#11 0x0000ac95552a1384 llvm::SelectionDAGBuilder::LowerCallTo(llvm::CallBase const&, llvm::SDValue, bool, bool, llvm::BasicBlock const*, llvm::TargetLowering::PtrAuthInfo const*) (bin/clang+0x4cf1384)
#12 0x0000ac95552c6808 llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) (bin/clang+0x4d16808)
#13 0x0000ac955534a6e0 llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true>, false, true>, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void, true>, false, true>, bool&) (bin/clang+0x4d9a6e0)
#14 0x0000ac955534b6ac llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) (bin/clang+0x4d9b6ac)
#15 0x0000ac955534cb40 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) (bin/clang+0x4d9cb40)
#16 0x0000ac955533bb0c llvm::SelectionDAGISelLegacy::runOnMachineFunction(llvm::MachineFunction&) (bin/clang+0x4d8bb0c)
#17 0x0000ac955370ff48 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) (.part.0) MachineFunctionPass.cpp:0:0
#18 0x0000ac9553cbb304 llvm::FPPassManager::runOnFunction(llvm::Function&) (bin/clang+0x370b304)
#19 0x0000ac9553cbb6dc llvm::FPPassManager::runOnModule(llvm::Module&) (bin/clang+0x370b6dc)
#20 0x0000ac9553cbc270 llvm::legacy::PassManagerImpl::run(llvm::Module&) (bin/clang+0x370c270)
#21 0x0000ac9554551850 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>, clang::BackendConsumer*) (bin/clang+0x3fa1850)
#22 0x0000ac9554af4f7c clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (bin/clang+0x4544f7c)
#23 0x0000ac95564a2968 clang::ParseAST(clang::Sema&, bool, bool) (bin/clang+0x5ef2968)
#24 0x0000ac9554d3c7e8 clang::FrontendAction::Execute() (bin/clang+0x478c7e8)
#25 0x0000ac9554cd86ec clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (bin/clang+0x47286ec)
#26 0x0000ac9554dfe2f8 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (bin/clang+0x484e2f8)
#27 0x0000ac95517a91ac cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (bin/clang+0x11f91ac)
#28 0x0000ac95517a2f24 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#29 0x0000ac9554b32fd0 void llvm::function_ref<void ()>::callback_fn<clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const::'lambda'()>(long) Job.cpp:0:0
#30 0x0000ac9554245c80 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (bin/clang+0x3c95c80)
#31 0x0000ac9554b34088 clang::driver::CC1Command::Execute(llvm::ArrayRef<std::optional<llvm::StringRef>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, bool*) const (.part.0) Job.cpp:0:0
#32 0x0000ac9554aff2e0 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (bin/clang+0x454f2e0)
#33 0x0000ac9554affbb8 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (bin/clang+0x454fbb8)
#34 0x0000ac9554b0bd88 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (bin/clang+0x455bd88)
#35 0x0000ac95517a6948 clang_main(int, char**, llvm::ToolContext const&) (bin/clang+0x11f6948)
#36 0x0000ac95516be330 main (bin/clang+0x110e330)
#37 0x0000e14e328284c4 (/lib/aarch64-linux-gnu/libc.so.6+0x284c4)
#38 0x0000e14e32828598 __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x28598)
#39 0x0000ac95517a2530 _start (bin/clang+0x11f2530)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 19.0.0git (https://github.com/llvm/llvm-project 3fefb3c598db995433093ed158c08368809b3f78)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/harald/llvm-project/main/build/aarch64-linux/bin
Build config: +assertions
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/test-7b926c.cpp
clang: note: diagnostic msg: /tmp/test-7b926c.sh
clang: note: diagnostic msg:
********************
```
```
$ cat /tmp/test-7b926c.cpp
# 1 "<built-in>"
# 1 "test.cc"
__SVInt8_t foo();
void f() { foo(); }
$ cat /tmp/test-7b926c.sh
# Crash reproducer for clang version 19.0.0git (https://github.com/llvm/llvm-project 3fefb3c598db995433093ed158c08368809b3f78)
# Driver args: "-c" "test.cc"
# Original command: "/home/harald/llvm-project/main/build/aarch64-linux/bin/clang-19" "-cc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-disable-free" "-clear-ast-before-backend" "-main-file-name" "test.cc" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-mframe-pointer=non-leaf" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "generic" "-target-feature" "+v8a" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-abi" "aapcs" "-debugger-tuning=gdb" "-fdebug-compilation-dir=/home/harald/llvm-project/main/build/aarch64-linux" "-fcoverage-compilation-dir=/home/harald/llvm-project/main/build/aarch64-linux" "-resource-dir" "/home/harald/llvm-project/main/build/aarch64-linux/lib/clang/19" "-internal-isystem" "/usr/lib/gcc/aarch64-linux-gnu/14/../../../../include/c++/14" "-internal-isystem" "/usr/lib/gcc/aarch64-linux-gnu/14/../../../../include/aarch64-linux-gnu/c++/14" "-internal-isystem" "/usr/lib/gcc/aarch64-linux-gnu/14/../../../../include/c++/14/backward" "-internal-isystem" "/home/harald/llvm-project/main/build/aarch64-linux/lib/clang/19/include" "-internal-isystem" "/usr/local/include" "-internal-isystem" "/usr/lib/gcc/aarch64-linux-gnu/14/../../../../aarch64-linux-gnu/include" "-internal-externc-isystem" "/usr/include/aarch64-linux-gnu" "-internal-externc-isystem" "/include" "-internal-externc-isystem" "/usr/include" "-fdeprecated-macro" "-ferror-limit" "19" "-fno-signed-char" "-fgnuc-version=4.2.1" "-fskip-odr-check-in-gmf" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-target-feature" "+outline-atomics" "-target-feature" "-fmv" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-o" "test.o" "-x" "c++" "test.cc"
"/home/harald/llvm-project/main/build/aarch64-linux/bin/clang-19" "-cc1" "-triple" "aarch64-unknown-linux-gnu" "-emit-obj" "-disable-free" "-clear-ast-before-backend" "-main-file-name" "test.cc" "-mrelocation-model" "pic" "-pic-level" "2" "-pic-is-pie" "-mframe-pointer=non-leaf" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "generic" "-target-feature" "+v8a" "-target-feature" "+fp-armv8" "-target-feature" "+neon" "-target-abi" "aapcs" "-debugger-tuning=gdb" "-fdebug-compilation-dir=/home/harald/llvm-project/main/build/aarch64-linux" "-fcoverage-compilation-dir=/home/harald/llvm-project/main/build/aarch64-linux" "-fdeprecated-macro" "-ferror-limit" "19" "-fno-signed-char" "-fgnuc-version=4.2.1" "-fskip-odr-check-in-gmf" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-target-feature" "+outline-atomics" "-target-feature" "-fmv" "-faddrsig" "-D__GCC_HAVE_DWARF2_CFI_ASM=1" "-x" "c++" "test-7b926c.cpp"
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW1tv27qW_jXKCyFDlmRbfsiDY8e72UinQZ3TA8yLQZFLNncoUoeknOT8-gGpi0XHTtrdzj4DzAbaxOZlrW9duC6UgrVmOwFwHUxugsnqCtdmL9X1_kDZH09XuaSv1w8csAZEpNCMgkJmD6iQnMtnJnaIiQPmjKJKyZ3CJTJ7bNAOjEYK_gBigCKsETNI72XNaZAsgmgVRN3PadT8I0F8Y_-50e128-1OmGxrUCFlEGdBPA-SdvIgGUVFM4iC2Q3CtZHogIJk5a1GwWyFgngdxGu0-XaLDkCMVMi8VoCCeHbkEcQzRLAQ0qAcUK2BIiYQRgarHRj0zMxe1gbpA5xgHgryST7DAVQQL5HZM43YQP4cCK41IFk43VEomGCGSWFHgml0sLTiJWoQeGsJ5hwZaVcdZWtWa4mERIRjsUOglFSW5w4EKGyZFlL9akWfavcdddzUptEDlaCdYFjQTsvPUj1ZCdyQwnoPGtFaWW8iksIORKMNpCsgDHMkK6stjQQAhYsu1HwtsMG8UUiQLDrNCJRj8gTCbkZ3rctq9m9ACv5VgzZIWpNrgjnOObTOMmpIPtzfLja3SNd5yQzCKK93SEEllbGm2RtTaYvJudqOmX2dj4gsg3jN-aH7FVZKWncI4jXTugZt3dIqgAnCawqNta0yHFKjMAGrhUpBpSQBbd1Sy1o1w3Yn1loS5oytaoE0UawyLeSNweQJ0bqsem1FoyCaP7SnFKtdXYIwFjjKmQjideNJIUEGtBkR0uwa211BsgRZBMktqrDSoBA2CAS1Tlow3h6L2K5cSgqdEzIpmpnEznythbAWrrDW9vyta0HcGXiwA5-xwDt7fGbWEKWkNXentMMSz1rB0nO0FgtF9tMU3QltVN2Q3QAH96mlWXT8gngWpNH2v8fFwX50VFEQJxGKXqIoijCZTyZpXEwgz5CzYLIIkoV-1c2HB8WEcfp9bIyUHRcp_LyV2ijAZRBPraGYMO74xNlAy0F8E70kNLUs7HHqMYxPMCQTiM5h-FqLDdsJzD9hQTko3Z3Ss2wsFY9N7LNJJ3Q6ZLO0bvgViDyAel1KYeDFNDMNu9sXZoI4e0c0MrckPZ6JzxMoTdLz6nXe3nwZclqiXEp-UcrEEvQ4pkOO4xmexUWE7u-_fb61MaHVXBBnNs4F8cJyIHusXKIz7UDHkpDxtsRMjEhlT1Tk_vecJr5sk3hGyUC2JlZsXWTaNpFp6DSPz0xAx3X6kaAEW-qeoNNT9vNpdmnvfOp73MzfOyeEkvN7wU55e7PTvTQamvTxtYIN-zc032RlY4JUqBau4qCIS0vb-a0T_hJbGvl2nQ_ZTuJZgdOh9z66tH0vn8FmlGbMfVtizh-lr_oza-2ybuROFNLZ5B2IKSEWQQ_RHuPIh5hhnA4108em1eK3m5pxCqqZ4JbvnTjIJ5uF_hzU5YDRDdaM3HBJngZefdavUkItSE-KsS8FHifZd0lxSdt26KYrJc0bsJvVN8xrOB6A4-8PJFp-YP4Hoxa12VsVfayHworp6SH29UCmWZR9jx4OTLvwdVw6TFBHJZwHQseWjwfEi6GTJMVTLz0MgdxtgA9Hj3rzADHOtNky05zN7fM2Z7YmWJ6uoGAwawkKSWHblmTe0oF0rg5WjTELzLX70ATadiK59eYGY_-30TUuedlqc2sUz2rpidXyKSbfabWFOzCt4bRnub5--tCP5pahh2hygojk6cd-pGrxRXzGZM8EdMw9RG_m3oFkOXqQpj6kJM-j95R0DztMXn89sMzy9YB5CTKZRUWRDg__CW1bzA5QnYXzFseowsqMrELQGXpvaw6Ly0u-CcnzxEu-6we7tSurfxjRmzw8iywDTzPzUwRTr-q5hOCzK-59A7VD73GfUs8ucXTCncSzoQ_zgYMMcNyV1dGdfxSDZeFh8Mv1yWScTaKmI2_L15KZm6bv_FKbqrbJYDC9YngnpDaM6FuxYwLalDhY8gkwBbUBrMj-S9sFD7PnYKltvX4D8cGqJj1-sOgei925JYPzaGx2_QqFP9wpcXFCsFXCoo--w7BsVK3ZAb5CsRTmwSgvah-K9jytGYfNqzZQtoFYG9rM1IL9q4ZtdbLT9mLVs2IGtl1HNthEocA1t6mDg4EPNia3Lc-3Ii2l0HVp-4hLFUVSYOsXnuP4DRgu0mJG3iM-aL4eFRaau-76H4KdeNRi89j1a5eD3CS17Dw8XmExTV2bMMTzYNv-xebR57aBEnsdy7udywQKr_uwfL3UmNKEzMDju1ZWmt5x2p4QSG3gcsebzjJLx2Pkd2iEZlMg_uEpK8Zt7a0NFgQ8Vp3bZpeRXdb2LLa8PDB-v0YLiAtP6pbtEdNBEvwWwhvMl4vaLLU8PBCzk-54Psakb3O9yLhQCr_ao54s_f64PROnPXPfT5_FMh4XlpWHJTvBEhdxijotLMePzqkGiDYl5vybu6JrAvoZYCcBy9Joj4ZXMVHFDqDOptjYS3BpnsQFjZx0A7rdtdJWOQW52e6S9LZZQjDnOSZP20JYpEcDNrxbYy7HS1mWWNBTLz9riD6ONZUu5l4EO0bnPnL1G7Zb8vIyHjdfcltc2ijnWiWnRW-xHdgahZuy202fkMOcW-eUajBvlwxuTxZ9-9xsCeIZx2VOcRDPjqqKs-Y-YI5-l_lZe5ze0KUTkn3ftdXXWmxwAfzVU-f7prt8s0UyL5ifXNrlSRpl3nH-f2fmk5L2oj1Ps2ARQ3RRcS7Y4TdpoNOmFxlPNpbuQcP5UuedpYuT27jLN0CT1EL3nCI5lS3PLzvFBdl-l7m-LNjvMr9n2lwq0N6EyN6WFWbWjO2l6vfqojX492skz72E41_HpnmU08vHZDX47GXDM2nwkib_Qo1cqLMmVkRPB5OTRDedp60OurTbYXBHdPH2dutCGjufaC15j79XeYynOdigajmfJxDZeY9AVzXAOIUkzuIsJWkTNNec5UG8xtg9igk5E_VLuBN1M0NGWo6mjqzb4xHNTolO5hnabu22rTZYmW0H8YfYTOa-8PPTKmOSRKhhcEF_dkVPonOL47PF5olZ0VaCiLQOUmDGgbrnxghemHEPNdEsskxqDSg8ICORBkBsUNkNuaADKM2kQOP5KBpFO-YA_tiDRpQUUOQJmcwzms_nkzRJonkCdDzJSJQl0yyL5nlSzI46alpDK1in3Vo8CfksBlpuFu4VYIpKSd3dEKqkZi_NlKtFOQe6Yk5FQbzeyxLsL6wwp2-fhjZ-v85r5mY9w9pxJronyoy7w1ewXUP5BmsNqrno8y0kpG3pFoj2DTYqtTvSrTP8xL_Bk-f2ufDi8XGx_IQeP92i9Zf7-y__vPuv39D67v52gx6_uOGbf_yGvt4-fPn62GN4OPdcN9P2LF98ttsvUIBcOgaKsOlJfiy-NYcpK_sTtAln-TyeEpebf4qA3v-g_n-VFc69eXA6GKeIYPOB5EGcoDEK4jhIltYTTciEC-7xyXz_PDr-hS9QfAy007DF4cpc5NyH1gQUKqRC_8GwYTE1-RphtdONl8Sh1dE5jdnlXxTbMYF5FzLbPb8kWLQhPBzPWwAhIePuo1Gs4tB-uxzl2tVQMhPK_I_uO2Ua5xzCQgH0xDlgFWJtwhwKqSDs3jNp5y3isGAcQoFLeKOTZo0C3uaBsAmqzUTF-iUVIyGHQz8VDyeYDivWIyoLhUsIK8mEsbXLSkgRcsBFt6AosdmHoJSQ_VBRhUQKozAxQbKy-aidEDJUshaUiV1o9_VcXPWhaltOhZgzrEH3m2rxzAQNjdWWDpJVj7Z5pSokVadj96rIUcx2vgBsatVJFMQ3hwx_tKSoQqzKQ_bROgFH6do1OGe9S1SkF4NCXu92oEJTC9c4rXY072V0syE5FpwhtSlv9bNO3JJ3XSzewf8aBwVN1nFEO-385PlrarO2hFofT6DzRIF5yHRzg9vzq7Xq9-3siThb2Y3TIF6PRm9_tC9PWabta23N4r-M7blt_yEoPtu1jUPPWNGPEfxqmx8xfafskmD-J7b9WZWdW3yJN7zYD-QShncd4XtJ_SzvPiBVClxRGJaYqGNsd_1KyFnJTDt2PJk2vjev44RNy9kO70RNwracCJJVOopHfRIt9BOrQklVSPZAnkImwl15zC7k5SWEFwLtI_gexdshIrlU4bFI1B_FblkbzgSE2Mjyo-VhUR76j5hSpdmu-77abn9bLrefFt9ut6t_Lr6u4-1yfbddbD4HyaqXUw6zda_OLoD2x-1slfN3OfN3OfN3OfMXljN_h79fHf4uB7ph-9y3dV3bfUWvEzpP5vgKrsez8Ww2m6bx5Gp_PZ3TcVrEJMVJFE8nUVKkc4jxbJxPJsU0G1-x6ziK02gazcbTaDqZj0iUFeMiszTGdJqmQRpBiRkfWf8YSbW7cq_SX8_T2XR6xXEOXLu_Y4njth6Jg8nqSl07f8rrnQ7SiDNt9JGCYYbDdfsCue1Dl66T3ny7Rc68GjFhfda9JRAvkQJdc9P84Uv_ty_ugi8HO4qJtTNQd4uzZ8Yt7S-q3N1grcBSda8iX9WKX__5vyBoJD9cx_8TAAD__7qkj8c">