<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/75010>75010</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Crash on memcpy of RVV vector
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          dzaima
      </td>
    </tr>
</table>

<pre>
    The following crash on `-march=rv64gcv -O3`:
```c
#include<string.h>
#include<riscv_vector.h>
void f(void* r, vint32m1_t x) {
    memcpy(r, &x, 8); // sizes of 1, 2, and 4 also crash
}
```

```c
#include<string.h>
#include<riscv_vector.h>
vint32m1_t f(vint32m1_t r, void* x) {
    memcpy(&r, x, 7); // any length crashes
 return r;
}
```
https://godbolt.org/z/7svWqhvKz

```cpp
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: /opt/compiler-explorer/clang-trunk/bin/clang -g -o /app/output.s -S -target riscv64-unknown-linux-gnu -march=rv64gc -mabi=lp64d --gcc-toolchain=/opt/compiler-explorer/riscv64/gcc-8.2.0/riscv64-unknown-linux-gnu --sysroot=/opt/compiler-explorer/riscv64/gcc-8.2.0/riscv64-unknown-linux-gnu/riscv64-unknown-linux-gnu/sysroot -fcolor-diagnostics -fno-crash-diagnostics -march=rv64gcv -O3 <source>
1.      <eof> parser at end of file
2.      Optimizer
 #0 0x00000000034dcf08 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-trunk/bin/clang+0x34dcf08)
 #1 0x00000000034db054 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-trunk/bin/clang+0x34db054)
 #2 0x00000000034296f3 llvm::CrashRecoveryContext::HandleExit(int) (/opt/compiler-explorer/clang-trunk/bin/clang+0x34296f3)
 #3 0x00000000034d2a5e llvm::sys::Process::Exit(int, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+0x34d2a5e)
 #4 0x0000000000c0db86 (/opt/compiler-explorer/clang-trunk/bin/clang+0xc0db86)
 #5 0x0000000003432743 llvm::report_fatal_error(llvm::Twine const&, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3432743)
 #6 0x00000000034328a8 (/opt/compiler-explorer/clang-trunk/bin/clang+0x34328a8)
 #7 0x000000000348165d (/opt/compiler-explorer/clang-trunk/bin/clang+0x348165d)
 #8 0x000000000348167c llvm::TypeSize::operator unsigned long() const (/opt/compiler-explorer/clang-trunk/bin/clang+0x348167c)
 #9 0x00000000072a670a llvm::MemCpyOptPass::performCallSlotOptzn(llvm::Instruction*, llvm::Instruction*, llvm::Value*, llvm::Value*, llvm::TypeSize, llvm::Align, llvm::BatchAAResults&, std::function<llvm::CallInst* ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+0x72a670a)
#10 0x00000000072ad369 llvm::MemCpyOptPass::processStoreOfLoad(llvm::StoreInst*, llvm::LoadInst*, llvm::DataLayout const&, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void, true>, false, false>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x72ad369)
#11 0x00000000072ad83d llvm::MemCpyOptPass::processStore(llvm::StoreInst*, llvm::ilist_iterator_w_bits<llvm::ilist_detail::node_options<llvm::Instruction, false, false, void, true>, false, false>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x72ad83d)
#12 0x00000000072afb68 llvm::MemCpyOptPass::iterateOnFunction(llvm::Function&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x72afb68)
#13 0x00000000072b033e llvm::MemCpyOptPass::runImpl(llvm::Function&, llvm::TargetLibraryInfo*, llvm::AAResults*, llvm::AssumptionCache*, llvm::DominatorTree*, llvm::PostDominatorTree*, llvm::MemorySSA*) (/opt/compiler-explorer/clang-trunk/bin/clang+0x72b033e)
#14 0x00000000072b051b llvm::MemCpyOptPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x72b051b)
#15 0x00000000048ad79e llvm::detail::PassModel<llvm::Function, llvm::MemCpyOptPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x48ad79e)
#16 0x0000000000f65bda 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>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0xf65bda)
#17 0x000000000255bde6 llvm::CGSCCToFunctionPassAdaptor::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x255bde6)
#18 0x0000000000f5ad6e llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::CGSCCToFunctionPassAdaptor, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-trunk/bin/clang+0xf5ad6e)
#19 0x0000000002556d79 llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x2556d79)
#20 0x00000000048acdde llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::PassManager<llvm::LazyCallGraph::SCC, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x48acdde)
#21 0x000000000255cff3 llvm::DevirtSCCRepeatedPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x255cff3)
#22 0x00000000048acdfe llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::DevirtSCCRepeatedPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x48acdfe)
#23 0x0000000002557f3e llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x2557f3e)
#24 0x0000000004a36d65 llvm::ModuleInlinerWrapperPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4a36d65)
#25 0x000000000476385e llvm::detail::PassModel<llvm::Module, llvm::ModuleInlinerWrapperPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x476385e)
#26 0x0000000002efb3e3 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x2efb3e3)
#27 0x00000000037473ed (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
#28 0x000000000374a617 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*) (/opt/compiler-explorer/clang-trunk/bin/clang+0x374a617)
#29 0x0000000003d11c91 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3d11c91)
#30 0x0000000005b1e529 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-trunk/bin/clang+0x5b1e529)
#31 0x0000000003d11085 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-trunk/bin/clang+0x3d11085)
#32 0x0000000003f94cf1 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-trunk/bin/clang+0x3f94cf1)
#33 0x0000000003f1239b clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3f1239b)
#34 0x0000000004074263 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-trunk/bin/clang+0x4074263)
#35 0x0000000000c0f8f6 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-trunk/bin/clang+0xc0f8f6)
#36 0x0000000000c0834d ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#37 0x0000000003d584f9 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
#38 0x00000000034295f3 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-trunk/bin/clang+0x34295f3)
#39 0x0000000003d58719 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
#40 0x0000000003d206d7 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+0x3d206d7)
#41 0x0000000003d2108d clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-trunk/bin/clang+0x3d2108d)
#42 0x0000000003d2adec clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-trunk/bin/clang+0x3d2adec)
#43 0x0000000000c0ccf1 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-trunk/bin/clang+0xc0ccf1)
#44 0x0000000000b06e61 main (/opt/compiler-explorer/clang-trunk/bin/clang+0xb06e61)
#45 0x00007f24d9c29d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#46 0x00007f24d9c29e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#47 0x0000000000c07b4e _start (/opt/compiler-explorer/clang-trunk/bin/clang+0xc07b4e)
clang: error: clang frontend command failed with exit code 70 (use -v to see invocation)
Compiler returned: 70
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW11z27a2_TX0C0YaCpRI6sEPihy37k3GHsvNedSAxKaEGxBgAVC2_OvvgKAkgpYdJdY95zRpJ01EfK699sIGSG4SrdlKAFwGkw_B5OqC1GYt1SV9JqwkF5mk28uHNaBCci4fmVihXBG9RlKgIA4HJVH5Ooiu1CYer_INGtxGQRwG0SwIr4JwZn83f_L2GkdM5LymEERzbRQTq-E6iD4eqVVM55vlBnIjVafNRjKKigCn9keAZ0gFeI42TJgIl6OlQU8BnqIg-eCaI4RQCWVebQOcNk0DHD_Zf9MAT4PoAwrwdYCvkWbPoJEs0MhWYvsXERSNEeFaOptbkMlVz7b28v_L4INpjdmHS2d5S8MbZgc4bpo2Zie-2URsEQexMmtnI-h2AAWmVgKpIPrwtt1rYyptHd4MuJI0k9wMpVoF-Po5wNeJ3vzrr_Xmf56P01RVrqQghnAESkkVRDP3AzGBMpJ_BUFt2Y3YEM5o4yqk4K8atLE6JEjnhJOMA2rZc0Peffo4W3xEus5KZhBBWb1CCiqpDDIS9XAzs66zYS7LAF9zvtn9M6iU_F_ITYCvmdY1aEcaRa3fkFlDuyIsUqNIDpbmSkGlZA5aA0Va1soV255Ea5kzYoAiVQukc8Uq00JeGJJ_RbQuq_0SCodBOL1TcqVIiYha1SUIY4FbF8rKIstlWTEOagBPFZcKlC3jRKwGRtXia4CvMyZ2ZWiwQgNpO5OqskPUpqrNUKPBAg0MUSswqJFiPB7U4quQj2LAmaifBitRo96Ct9cZC6IrXsVjigaDVZ4PjJQ8XxMmgujqTYztNJb-PB-kQzwMD6XHJh_orVZSmjMP_I26dlI0KHLJpRpQRlZCasNyjQaFkIPG_37xkbiIbARwStit7ZH1bRDNQRZB9BFVRGlQiBgEgtpYVDAOriW2LW8rw0r2DKpdowGOQhQ-hbv_ojHNizBFjX6jWRDN9Fa7H3eKCdOo68FJND00UuRxKbVRQMoAx1amTJgmnNjY8SMaC_CH8KlFY-PNHu6oBzcLJ-NjcOcciKirW7FgK0F4gNNaNNsURVza8c8Azs7tgcM-ODyNi6gDbm69fA-53IDazqUw8GRcze9EUA4fn5gJcHom7prZPXhRjztMJnDc1U3ccRddUHOUScnPwp2d2wM37oIL85BmafzOadwg3iwTn4IIJ-Ouh1xwXzZbydJtJV2dPzwyASiXQptW5-fiowHiIY37SFOSnmGalPjrKfGnSUfxhL57mmYUb5r0xTRJ3uH9YVvBgj2Du5IVKGKkQr0la5E79s-BMMk9hNMuwgSTOAlJB-FnKOfV9rYyd2S3MipQhVTlnHC-4NLcVuZZeHK5EdqoOjdMigDPrFxOq_tCeA0nlu6Z80pnnK2EX_SBmHw9m92DrrnRrXy1oa62qIXDEs078YpwftNofeYIn9p9591qb8nds2-jethjn0bx9BvsuyC1MFLBbfFJEupx35S34H0ibNOjFVfEkE9kK2vjLfFDA8aZNktmnDqXj8uM2XPUvN-CgiGMuxIhKSxlZbn1m3oCmKOCcA3eD3cunyOj6ma_f9nIFsZn8Yel2_PHqO-PNKKn--NET_zEfKYR9fjEPT6LLE7f5tPRArfierc0u6QeCs8D2OLxAEc-4CyMIngbsKrFTVnx12F6Yau5TfjEMkXU9kYU8oU4OqGqX6N1XTYKmJN8_TIkXsmSCauoBwUva--kNm-3-AylVNvFYtbUvJ_chjuP3HGf3Mko-ya5pxE7E4RvNdOfiSArUN4S2Xc6m9Ab5J5p3gFrnBKaTLu66S5la91nSYEfB9n3SYcS36EKNKgNUGc66B8jxP75r2W6JdJj2jsghkU8ySg5A9NN27dM-lF2fzmnOZd4PvNO23gyySjE3RvE3xbz-YPcAbGumFFSmeaJ1hEzP5HnrT2k_aZItW532_n8u4x-bQjvxOS1wfGOoDfbeLWNYX9WlBhwUf0sBLcEegyn_qqYEBp_X_w5hZA3_HQulf-wX97plNdW1C8uNSckT2nT3lqOaTI9IY6ewsI_wvjbCKN1fFcZOOydgXJKzx-DfkJ9_RM7f8ol0q4Ab4mMesEzL7wn5VewYcos5vN7qIAYoK_fCf3i5LbceeTiF_GnOH_8Oe6if5bwT6myVkSeyqLeEk4K_wmRpDWHB3kntblVFFSD7Ju3NK7bdxHbdjnTXVtriWeq97xmTKKYxpMXpt4IzgSofylSVaBeD1j_cQtbAzwL_cc2SRylk-8LGTur5qfwcq4oceDltXX7nyfbcemR7T25wVBkEUQnnOyOUfw3Z6c13mPHfyOZjJMImjeSREixLWWtkSAl6KpJQpg6VB9LZmZaQ5nx7e_AK2ijy30t2pQH0tyoswqsGAOcOgxNow8uQWi2f7y1fytWC_ZXDcvK-Bwo8risHhUzsNwlPXQ6UShIzc2SAgcD3-jYPhqLT5n2QUp-2-TaXDOng1Pm7PXqTviSg7kUui6t45on323pn4bxYV5VQTQLm__3vkp7viLxKOkOa_3SDuIw-MxfHRJePopV45g-sN-BUFALICpf37rXPt7buU7TuaTwG4hvtHJvHr7R6BMRq2NNDrQumky8eyiOhbz2lcJbGjt0uRFG1Zpt4B6KuTB3Pa9vinYfse5bbLWBsj3o_PtleoJk3vli3knIiwfec5aIjkb5dPQWDiebJqHmQRGhebP0_xSsJ77Z4mGXg3OOUNYi60L3c6sm2QgmeNqFfkeUhtniwQe2gJJ46SXnSjNpEXgQR312w3RyZFG1wnWL-gny2sBOy-l5uAtT70TSy6UqpuO88Nx-razz9kuqi-w8mNyUHiY_gaoY4Wia-WS5WW6ENkTkcJyv1404iw4dLA-3f34NkzGOIy9MO4QH-BuZk5doX5h3jiXfwvHwTnq5YEVaxCjPR8uSMP8EM1OKbG0Ujub5mqhdsJ7twpVXdkh2fj9sB8pDHfdQp9GYoh2189FDs4a7iREl4fxLk2_cvDg_ZkL_tbmUvA1anX1piqhiG1BH9-hehhedpONi2vDQGXeX_rNUDZVN7SHjp2mSE84zkn9dFsIiPajCzd0qZD6ay7IkgvYX5FGX7Tcjl9BB_FuKwxa73372HZbL_OlpNHIXGdEsX7rc-JZFr7EtWBpFXHZJU90bjnBuFW9vSvf1tsnsEHxn--Qz1yXACSdl84Iv6SRHpbvs0j9kdtwfaT9JdHJikuh9LRakAL716HzbdWfJI534z5eiaV9Rycjb1n45RViOhxVRZhi-5fqxn2tNcRjT5FXiGleRF5vbjk0vMvc62gavHW3faDrrJbWeJdXSWdnVz7h35sCjMKXfS8MfMtOvc_CHzD4x_Voe38vAu3d7RZj1eJvtfCpt3ZuqM5NnufHIwz3yCIX8NaBXnd_eHn9kc3-N9H8jee8_RjZseHRFvU053x8jd4eJHdwmRsxeJti-suW-9_iQ9w6XYz8BPgtjiEfIYnznVG4kb6rd-Sop8JhOczyl07CdhbMswNdPabyMx943LJxl-VDLYewe3Ngu3phxf0wYh2i5tN2W2hBllh1bTp4Fxv4sSc-dSTYG5MZ_t0fsWPvJduo9fFDmvn0q2hM7ylsdF4RxoOiRmTWCJ2ZFQgElDZ-1BjTYICORBkCsc6xuZ9mdqNuP5aD5Si0Je5-4XdDLiE6jKbmAy1ESYjwOR9P4Yn0ZRyTM0iLK4zQdF5NJmkxwPMnTNJmScTolF-wShzga4VGIQzydxMMIEjwiNCLZZDKCqAjGIZSE8aEV_FCq1UXzkdplMglH4QUnGXDdfNeJsYBH1FQGGAeTqwt1afsMsnqlg3HImTb6MIphhsPlfPehp_uSEMkC3X_50n5jd1Erfvnj39A1CP8vAAD__8nM7eY">