<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/82606>82606</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[RISC-V] Clang crashes with optimization level 2
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
OMaghiarIMG
</td>
</tr>
</table>
<pre>
Hello, ran into the following error on a RISC-V build when setting optimization level to -O2:
```
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: /home/omaghiar/riscv-gnu-toolchain/build/bin/clang++ -o tests/common.o -static -O2 -Wall -Wcast-qual -I. -march=rv64gcv_zba -c -MMD -MF tests/common.o.d tests/common.cpp
1. <eof> parser at end of file
2. Optimizer
#0 0x000055a9ba5d5ebf llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1c7bebf)
#1 0x000055a9ba5d3f0c llvm::sys::CleanupOnSignal(unsigned long) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1c79f0c)
#2 0x000055a9ba5223d7 llvm::CrashRecoveryContext::HandleExit(int) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1bc83d7)
#3 0x000055a9ba5cb382 llvm::sys::Process::Exit(int, bool) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1c71382)
#4 0x000055a9b9608b56 (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0xcaeb56)
#5 0x000055a9ba52980a llvm::report_fatal_error(llvm::Twine const&, bool) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1bcf80a)
#6 0x000055a9ba52999e (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1bcf99e)
#7 0x000055a9ba57761d (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1c1d61d)
#8 0x000055a9ba577644 llvm::TypeSize::operator unsigned long() const (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1c1d644)
#9 0x000055a9b99d03e4 llvm::isSafeToLoadUnconditionally(llvm::Value*, llvm::Align, llvm::APInt&, llvm::DataLayout const&, llvm::Instruction*, llvm::AssumptionCache*, llvm::DominatorTree const*, llvm::TargetLibraryInfo const*) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x10763e4)
#10 0x000055a9b99d1d0d llvm::isSafeToLoadUnconditionally(llvm::Value*, llvm::Type*, llvm::Align, llvm::DataLayout const&, llvm::Instruction*, llvm::AssumptionCache*, llvm::DominatorTree const*, llvm::TargetLibraryInfo const*) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1077d0d)
#11 0x000055a9bbdcf380 (anonymous namespace)::VectorCombine::widenSubvectorLoad(llvm::Instruction&) VectorCombine.cpp:0:0
#12 0x000055a9bbddaa37 llvm::VectorCombinePass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x3480a37)
#13 0x000055a9bb847d26 llvm::detail::PassModel<llvm::Function, llvm::VectorCombinePass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x2eedd26)
#14 0x000055a9ba821ca4 llvm::detail::PassModel<llvm::Function, llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1ec7ca4)
#15 0x000055a9ba0f9e5e llvm::ModuleToFunctionPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x179fe5e)
#16 0x000055a9ba81c0c6 llvm::detail::PassModel<llvm::Module, llvm::ModuleToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1ec20c6)
#17 0x000055a9ba0f6900 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x179c900)
#18 0x000055a9ba82dfe8 (anonymous namespace)::EmitAssemblyHelper::RunOptimizationPipeline(clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>&, std::unique_ptr<llvm::ToolOutputFile, std::default_delete<llvm::ToolOutputFile>>&, clang::BackendConsumer*) BackendUtil.cpp:0:0
#19 0x000055a9ba83131b 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*) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1ed731b)
#20 0x000055a9bae0cc2e clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x24b2c2e)
#21 0x000055a9bca36099 clang::ParseAST(clang::Sema&, bool, bool) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x40dc099)
#22 0x000055a9bae0c005 clang::CodeGenAction::ExecuteAction() (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x24b2005)
#23 0x000055a9bb09f3b1 clang::FrontendAction::Execute() (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x27453b1)
#24 0x000055a9bb01a2db clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x26c02db)
#25 0x000055a9bb17f50b clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x282550b)
#26 0x000055a9b960a81d cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0xcb081d)
#27 0x000055a9b960331d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#28 0x000055a9bae5506d 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
#29 0x000055a9ba5222c7 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x1bc82c7)
#30 0x000055a9bae5550c 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
#31 0x000055a9bae1bc5e clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x24c1c5e)
#32 0x000055a9bae1c62d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x24c262d)
#33 0x000055a9bae26bdc clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0x24ccbdc)
#34 0x000055a9b9607c11 clang_main(int, char**, llvm::ToolContext const&) (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0xcadc11)
#35 0x000055a9b9555f1b main (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0xbfbf1b)
#36 0x00007f9ab2956083 __libc_start_main /build/glibc-wuryBv/glibc-2.31/csu/../csu/libc-start.c:342:3
#37 0x000055a9b9602ade _start (/home/omaghiar/riscv-gnu-toolchain/build/bin/clang+++0xca8ade)
clang++: error: clang frontend command failed with exit code 70 (use -v to see invocation)
clang version 18.1.0rc (https://github.com/llvm/llvm-project.git 6c90f8dd546334b01c9a86387950e8c72d459f1e)
Target: riscv64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/omaghiar/riscv-gnu-toolchain/build/bin
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/common-9cdfcc.cpp
clang++: note: diagnostic msg: /tmp/common-9cdfcc.sh
clang++: note: diagnostic msg:
********************
make: *** [Makefile:61: tests/common.o] Error 1
```
Tested on main(bc1c86b810e518a8e3fa90d5c26908c43788873d) and release/18.x(6c90f8dd546334b01c9a86387950e8c72d459f1e) branches.
Attached preprocessed file:
[common.txt](https://github.com/llvm/llvm-project/files/14372209/common.txt)
`clang++ -x c++-cpp-output -O2 -march=rv64gcv -c common.txt`
### Full context:
Building the neon2rvv project(https://github.com/howjmay/neon2rvv). Clang version newer than 17 required for latest RVV intrinsics API changes. Clang works when building with -O0/O1 but fails with -O2.
```
git clone https://github.com/howjmay/neon2rvv.git
cd neon2rvv
# set -O2 in Makefile#L20
export CROSS_COMPILE=/path/to/toolchain/riscv64-unknown-linux-gnu-
make CC=clang CXX=clang++
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWl9z8yaz_zTKDWMPQpYtXeTCceI-6SQnmdht3zsPgpXN-yBwATlJP_0ZJPkPjpPmaZ13znnbcZ_YCLG__e2yLLDUWrFUAJdRehWl1xe0dittLh_u6XIlqLm9_-mi0Pz18htIqSMyQYYqJJTTyK0AlVpK_SzUEoEx2iCtEEVPt7NJ71dU1EJy9LwChSw45zvptROV-IM6oRWSsAGJnEa9BxIl4whfR3gcDXH3aX6W1FHZjh0l406IUKig7Dso7ttu1YZKwZEVfwAy8HsN1rU4LKOSFhLQBpjTpt8O-Xh3M57dIFsXlXCIoqJeIgNrbZzHsnJubT0aMo3IdCncqi76TFcRmUq52f7prY3-NzAXkamwtgYbkSmiiiOhmKw5NNwwQ-2qQeoMZeC5WxtYG83AWuDI6tq0zf5Naq1mgjrgyNQKWWbE2nWQZ46y74jX1XrHE-6jR6OXhlaImmVdgXIeNorIdKUriMhUV60FIzI1wrJNb6nqntNashUVKiLTxj7-b_OLSaqWEbmKyBXqaeTAOq8V01WlVV-jnnXUCeaNhXq_USlR7zdGrev9XlOJerd91KuoYasouTab4WDJNos_Cop6DPXu769R7376Zsw-P25i63WrXtxHzX9RMgFdRskNWlNjwSDqECiOdIlKIaHtTLrOD613gWmbUUQSjPALxhinKc0LmvIUihI1hkzGUTK2r7b98miEcg3N89ZW2b6Toc8LbZ0BWkVk6O0llItIjiKSnYPuiFzhl5iNCijKiOR78PER-KTE7BT4iQSq6vWDmomlojIiWa2aSc2R1F7K2aHmJWYBVBJCJSThowOoEz8VnoDpDZjXiVYOXlz75BtVXMLNi3ARyb6C14JlCR8FYJMQLCuSjJx2imaqtj8OIU5QobX8Al7jJCMB1MEh1HyIsyIdnlUoo1Ckw0BmemTLPMP0gJ42Vi6ayLxoI_PhbJk_CwWIaWVdN1u-hKuClRmmAe7hMe48h7MLzXMIhI5CoaPRMOZn9oqYD2MeCM3eCB0MDiw0f13DTPwB7S-9BkOdNugoKGTeJo2dzo93MAjw5oEX5xwncIhX2BktYa7vNOW_KKYVFz5BoFK-Bq71K5U1RGTsnWrfOpZiqY6aHm_V1vv2rdfU0Tv6qmsXuOe-w62yztTMy34rxdq6WvtHE8pWb1Fc60ooT_PcwM79j_rMqVmCuxOFoeb1VpX6oN-ZpwceDRPYG8EvJvjICDHH_GxG8C73Gcv8s2ww4pgHNghW9IKzMsmwF0qVVq-Vri1StAK7blKQvCO8SV4nuiqE6qb0s-CgZnXR5rXeYoGJAg59bEfBGE2WlYxx8_8OGgmhcUqTwxU8GOGRbldFU6tA9LRWe7mB7RSVr1bYe6roEkyUTE68lNx0eM9ph2SQYZqMAjsEGUCRDUacDA_AcnBUyC4JoNbeaw7yNORAybckBY8fDVgwG-AtGWD_GkX-8_-EewLAORkG3AcpDc1IzOjgDNw3fT9S8K9y_Q83YQxsxGi4lIQZIi5zSOEA7L3mtYS53gLzphlzunbNJv6E2u0LP6R098rXqDzKS0ghUDlMLrOYYfZjEWOr4-STRJ3L7fZEved0_9fYB0YwC2PG6MjhhjnGn5j7pzj_7-JqlLMc44Cr7Ci-8hKyP8sxbirhxtZCVcjXbyDX0E3Up1o9HBzZPYo1SJ-FkKxF0nS6as_ixrswax1vn9RK_F7DYu1CRgx9XqyfjXCw2B6rHLzEoaS1dAsOEhz8yYtdiB5-Ruxca_lQu3XtpqL1is_IPHrrUOBbDiZa2boC06WTXesvTsjTSVce2iqJk7g4HNbbpRukxRAyfy3oUmnrBLM3atkY5hjYN6AczAyoYauHJne2QeZ90HWiOfwE6k96tQn0n3S6o2p5qsue1pkzQi2foDwVEbus_SMfO8x2namt2MATlBPlHo-svim7VNWbb_ZqHVTdqv6fd9NPuMx5IykfJXFxGB1IeCAKmDECH6E6OKSbG6qsbALBL0ocueJ4Nt-e631BGjkoCCPBgkyCrRSjyRDn-aEij9RYGM_mIcwZVDQ4lvqa46kB5gzneQCYHDOPcXpi-nUu3p05AqsdbL0--wpeMU4DmOHWCOdlUsSHMKfGm3k3FQ9xfgXC0SBNijhAOAgRxpTwIiSyWgsJxm-DqWJwmsv3VfoC_x0yTHg4EYMcuohHZYrD0N_i3Suz0Yy-xf5G2fOHEZKRNMUh-uHRuTTNYo4YixdVM-JBxjQ2hr76OJ9M2Iqa_XFLFxCDNjJBGy34FyjBCpzFwWEMGR3pkCQxR1vaJ_G8iQsHmswqKmW7xb-t1vKkQkernB-jC4sH62COuBEbMCdzAhLmb5CmeMgbVg7GLbsNw8I0xDZP29m3y1wZlbKg7PuiVB7p3mNa2Z33TOKJriqq-PFEPmnA3eKn1-3ZYLDs7Zf03XK3e2GxYC8vcdz-KKgVzC-NwmNqWAw6-4aFM1Q4u318NByV0s8Gv5_cPfddxvuAPt4db7evRGQkaVVwGpHRniqSbW_IftbFaXvkx1dbhH3uauupVjNawtH56cem-4LbL8KCs6-jK1FI0xQz9E_2D894f02N6-OPHOHoOhbigqXwLnFNWKZvlsgtm0EMP3rRd3gvsf6g6_jouu38VztkwGIWnoscXfxCzIaE_ygpP-vCvs_Iz7q4E_a9-4K3QXnnBGsqvP27G9vPkni4wftSKsmQBOvR0bU0kGHB352Y1wffg0zhRIrwngn-g1SeO21lrOAsIO_4onzE4i5t3aYkW_BNNBm_vRh6Z6k-72U7Z3GQzIaX7XmapmVcII_4rIKLsijDjeDutnxU5rQgeTrEWYIWCykKH3qpcYsOxW7opX_We67N69Vm95P0k9gLtHVEpv3-7mvzsBmnz6JknAyI_3cv_jj5IpQDagWfmfKM8n3IOny8rSfzX5p2VHYbAcQ6Vy6pkMDRs3ArBC_CewYHNGru7GoLqLdBTiMLgMRBfn4oC23AWKEVirN-3MeG-Vd_rMisvxQODVmOy4zzdDBMkkGBY5bTbJhkozzFkLER4YM0L-O9pu05jdetoW046NXqu9LPqieFql88jV3HlQHKUdWeWI_RWlvx0j5qNhVSAr8W5m8Ul51iXmnnN2aI746wUGWXjZDOR_7Gpx3hsNpvPJ-PJ9_Q_NsNmj7c3T38dvs_P6Hp7d3NDM0fmuarX35CTzePD0_zaFtj93iqWi-zPiq8W7G362AANTkIcETdbsjPs0CmrlrvKuN6OeMlY_sCub87kF39NbOcyTgV_Q4tuq4ZRenVPf0OTVVfMh76VPBNwWCUXqObpgQ0Plkt2jk0WM-6VqiL_AWLWTYsshhDGmc0g6SkOeYpI8McZ2yQjLIsGyV8a1gDEqj1bh5n_ZeIZD8w-VBhqGIrsF3p5tg5ylbAw9LPTssOdXrVKeheXJRe_3CAiMjUD-iZigfJiBCc70nzY-7i_hAHZZ4viLVfe2y97unmhLkt8Dwq5UQ9hg7GC_mOSNJ-0LSW0i-e2z1Q8_jKRwKhlk1NrAKtiNls0A76R7qu9PO_K_oaken2vYjkfTQJAquCZzDIrahC8agpABbGU6wNktR7EHr69VcklN9OWMEsGj_e-ixALcFux3rW5rttS5WLLdwm6PcecESmDzEqatesBnbbTvonXdDHaia1go8qid_q5WN8NyH5jqQdvchCaxeh0G6SkOSOdELhpSlfnjw9zGaLycP94-3dTZRcR2S6pm7lI4Bu_tmH53fXhN5-fqLJJEqu21Vs8q9_bb93wSJU_oJfJjxPcnoBl_EIZ2k-StLsYnUZ4yKnJS9SYNmI4REfFgnJCEBSMJ7n-EJcEkwGmBASY0KSrF_EZVoMANJiQGKc8miAoaJC9r3L97VZXjQl15cZGeLhhaQFSNsUrxPS4SNRen1hLpspUtRLGw2wFNbZ_QhOONlUvLel6j6utI7Q1GxDZ-QT1erkojby8q8XiTeg_zcAAP__VIKSaw">