<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/65858>65858</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
VLA in coroutine produces internal clang segfault
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang,
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
kelbon
</td>
</tr>
</table>
<pre>
Its obviously must be ill-formed to create VLA in corotuine, because itis not possible to determine frame size for such coro
```C++
void use(int*);
dd::generator<int> g(int i) {
co_yield 1;
int arr[i];
use(arr);
}
```
https://godbolt.org/z/WoE94a4sf
<details>
<summary>compiler output</summary>
```
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-16.0.0/bin/clang++ -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-12.2.0 -fcolor-diagnostics -fno-crash-diagnostics -std=c++20 -O3 -DNDEBUG <source>
1. <eof> parser at end of file
2. Optimizer
3. While splitting coroutine @_Z1gi
#0 0x000055f89f40e8df llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x3ba18df)
#1 0x000055f89f40c90c llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x3b9f90c)
#2 0x000055f89f35f518 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007fee176a3420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x000055f89ec3f4dc llvm::AllocaInst::getAllocationSize(llvm::DataLayout const&) const (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x33d24dc)
#5 0x000055f8a09dbcc6 void std::__unguarded_linear_insert<(anonymous namespace)::AllocaInfo*, __gnu_cxx::__ops::_Val_comp_iter<(anonymous namespace)::FrameTypeBuilder::addFieldForAllocas(llvm::Function const&, (anonymous namespace)::FrameDataInfo&, llvm::coro::Shape&)::'lambda3'(auto const&, auto const&)>>(auto, auto) CoroFrame.cpp:0:0
#6 0x000055f8a09dc0e8 void std::__insertion_sort<(anonymous namespace)::AllocaInfo*, __gnu_cxx::__ops::_Iter_comp_iter<(anonymous namespace)::FrameTypeBuilder::addFieldForAllocas(llvm::Function const&, (anonymous namespace)::FrameDataInfo&, llvm::coro::Shape&)::'lambda3'(auto const&, auto const&)>>(auto, auto, auto) CoroFrame.cpp:0:0
#7 0x000055f8a09de6fc buildFrameType(llvm::Function&, llvm::coro::Shape&, (anonymous namespace)::FrameDataInfo&) CoroFrame.cpp:0:0
#8 0x000055f8a09e6409 llvm::coro::buildCoroutineFrame(llvm::Function&, llvm::coro::Shape&) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x5179409)
#9 0x000055f8a09c88cc llvm::CoroSplitPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x515b8cc)
#10 0x000055f8a08cde66 llvm::detail::PassModel<llvm::LazyCallGraph::SCC, llvm::CoroSplitPass, 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-16.0.0/bin/clang+++0x5060e66)
#11 0x000055f89e348724 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-16.0.0/bin/clang+++0x2adb724)
#12 0x000055f89edecee6 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-16.0.0/bin/clang+++0x357fee6)
#13 0x000055f89e34c3be llvm::DevirtSCCRepeatedPass::run(llvm::LazyCallGraph::SCC&, llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&, llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x2adf3be)
#14 0x000055f89edece96 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-16.0.0/bin/clang+++0x357fe96)
#15 0x000055f89e3498bb llvm::ModuleToPostOrderCGSCCPassAdaptor::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x2adc8bb)
#16 0x000055f89edf4e3d llvm::ModuleInlinerWrapperPass::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x3587e3d)
#17 0x000055f8a0771196 llvm::detail::PassModel<llvm::Module, llvm::ModuleInlinerWrapperPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x4f04196)
#18 0x000055f89ecbffb9 llvm::PassManager<llvm::Module, llvm::AnalysisManager<llvm::Module>>::run(llvm::Module&, llvm::AnalysisManager<llvm::Module>&) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x3452fb9)
#19 0x000055f89f7f1b44 (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>>&) BackendUtil.cpp:0:0
#20 0x000055f89f7f4bd6 clang::EmitBackendOutput(clang::DiagnosticsEngine&, clang::HeaderSearchOptions const&, clang::CodeGenOptions const&, clang::TargetOptions const&, clang::LangOptions const&, llvm::StringRef, llvm::Module*, clang::BackendAction, std::unique_ptr<llvm::raw_pwrite_stream, std::default_delete<llvm::raw_pwrite_stream>>) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x3f87bd6)
#21 0x000055f8a06ff238 clang::BackendConsumer::HandleTranslationUnit(clang::ASTContext&) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x4e92238)
#22 0x000055f8a1923d5d clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x60b6d5d)
#23 0x000055f8a06fe865 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x4e91865)
#24 0x000055f89ffda671 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x476d671)
#25 0x000055f89ff5e993 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x46f1993)
#26 0x000055f8a00beb3b clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x4851b3b)
#27 0x000055f89cbe741c cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x137a41c)
#28 0x000055f89cbe2bdc ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) driver.cpp:0:0
#29 0x000055f89fdbfce9 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 0x000055f89f35f977 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x3af2977)
#31 0x000055f89fdbff1c 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 0x000055f89fd883fc clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x451b3fc)
#33 0x000055f89fd88ded clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x451bded)
#34 0x000055f89fd9323c clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x452623c)
#35 0x000055f89cbe5523 clang_main(int, char**) (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x1378523)
#36 0x00007fee17151083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#37 0x000055f89cbded1e _start (/opt/compiler-explorer/clang-16.0.0/bin/clang+++0x1371d1e)
clang-16: error: clang frontend command failed with exit code 139 (use -v to see invocation)
Compiler returned: 139
```
</details>
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsW19v2zgS_zTKC2FDIiVZesiDo8TdLrrXoE53gXsxKHLk8EqTOpJKk376AyU5Nh2nSbu-xV6vQNo41JD8zW_-cETS1FqxVgDnUXYRZZdntHO32px_AllrdVZr_nD-1lmk6zuhOysf0KazDtWAhJSTRpsNcOQ0YgaoA_T7uzkSCjFttOuEgghXqAZGOwtIOGGR0g6hVlsragm-IwcHZiMUoMbQDSArvgBqtEG2Y7f9QFF8GcXz8f88Hn6qCF_4n771TguOOgsRLoRyEZ5HuIzI-JDziMwjMl-DAkOdNhGpvBS5QuuhAxIRLlE0GzsgplcPAiRHyeMgCCHkJakxUXYhouxy92iY2D_ZmzWaXR4g3lfj1rnWelh4EeHFWvNaSzfVZh3hxZcIL_7QV2VKU9sEupOKg6NC2ohcPTbZbrOh5iEiV0xvWiHBIN25tnMRqSK82D0-SuPw5_W7q_nyCtmu3giHKKq7NTLQauO8hQ7ACnfb1VOmNxFeSHm3_TVpjf4XMBfhhbC2AxvhBaKKI6GY7DggdwuIGWpvUU3ZJ2co672jNdAazcBa4MjqzgzNvie1VjNBHXBkOoUsM6J10wHy0lH2CfFu03pkfVM8jeLy2ui1oRtEzbrbgHIeOIrwQrce2ZaiCdy3Uhswvk1StZ4k-TSexhFe1EJtGwcXQ5M1_0xNM0nRZI0m2o9G29aP2fM8tWiy8QygyeS-yCfUbib2QTl6H5FLoRxINFmiyWTN2MRpLdktFSoil18F5YUTPMXTGE0apqU2Ey7oWmnrBLNo0ig96ckMm63jEblkA3Aco8l7giaX_7i8uvj4BnlnGfjdOkPiGYtIBbrx4dBSY8Eg6hAojnSDGiFhkMRe8n3rxEZ8ATO0Ed_2x62QgGwrhXNCrfuA7ZwP5yiNV_9M1mKMkgiTGMX3cRzHWdYUZZPGUPAG9S7UB6h9sMOHayOU6w18M3hJsRMy9PNKW2eAbiKce0_pI75EES7-lJkjfBHfk5omBW98ID-iTg5QszJmx1BXEqjq2vdqKdaKyggXnepTK0dS-1lOhrFsypgFGHGAkWRNlhSo8v7xAZi-A_MwgPqFKi79VMXIWiBTaeXg3k1Z64Mq7v89TkHGKWYNQDLLKUlxjFYrA9ZpAyvjRu2kqCO8uC_yVZ5OpFDd_WStuuFB624NUD612ut3Ed8naYrjQJN0XxNgpEn5PttzKTWjb5V126TuhiYntFqKL6GzXFJH39EH3TnEtO_jPaYcPp_IGITjlIfGyPZUoHHJa8Zy1C9RfXh6YKtVp9YdNRz4SgoF1KyEsmCGpF1QpdXDRncWKboB2_ZBUIYMNLpf5yq0Wq1Vt2L399uhdTt65Op3KldetZVwYF4eeuEX4JuHFi46Ibnv4Vsp5wu_Gi60Gea2AceLTjFP_h7DFXrNRN44gxp9l92I_Zrff1re0hYGow0NEZ5Juqk5JRGe-Uk6X3rsTXzQUPpUR65Gya1A7_ja6B7GcW_PD2zIYiie2HAwmdBqZfWpTffWgflpu2O2e7UNZwc2hLxhqPb0PJJ1lI1XKfUdPL0IuAgBQ57G5VEYvRLVdqXtR_x-TU60LGXJrEzjMsiEZagQKwq2n8y9BktfOVxTO_q96VSgyTv65aGiUr4xtL0dkVfVE73misoHK-xvVNF1Hy4vD7HfP5TBee93-QsywdPqzbKqPracOvgAtpPutNxmdcF2q4yvSuKA24JxyPM9PMObwlhPUWt_0xzkN_MSWih4dG3AgrkDPnAP9i-wyJ80h88nP53sWSeL8xjyPHCyoPYFkhYznO77gHes72Tjp4P8rzkIprye4TRwkODFAzgwgNNnoR_QzX6m0h85Ukjm35LDVEoOUikjNezhuYQ7Ydyyqj5AC9QB_1kTvZiNGlJDwHH6JBuVp89Gxy31M6B_ZGfrA7oMAzo7COiyqOs9PL9p3km40dfauveGg-kBel-Zc9r2xxDH-B66fRO_Y5eRsdOFFyvqOtA4D8OrSYHwJxq_VVIoMH8Y2rZgns9ifxdFSVbMgPBA0XDnYDZLkm_MI1vlqtfQc6rUsaPnuWD-u3CeNnGaHIRTEW781k1Tl6-oAY8x_WOQRNIMN3UZkFQG-_yzJqnT9KWNqKuNcHNrYVPLh19Attu9wQ-dGg90-s3za9GC7E9siwFJL3RB2SdQfD5uJ1W77c9OiX93sGpdSIWhn1ftZyMcrLanNHudODS0k27FQYKDFzqO23_5a6a90Vq-74_jFmJwh9fMedBrN2GJRsU_OiGfbtZFmOD4wBRpzXO0x5ynfRxkmCIk9nJ3bHel1j3vvaJ7Ir8A5WCWQA279ZbSygb7pXuilebwBtQLUjfUrMG9IPSOqvUxkR1rS2eEWn-A5lh-G3e2_14udKqIbIpZzYO0hZNgqcibBpPiiPaVVrbbbENvOIa7MVRZ2QffRyUO_GO-vBmP406aeKHEmBSBBvuv8DQpMeEZ39fgmhoL8-VNiG8JGzp6Rq213P0-EdI8rnOeBcsyJgdcQ5FnR6Jg9LQhCu-BdQ62zlecksmkyLMAX_D60TSc5rNkH9_CeIs-hsI-wJNCm-U8nyUBtCyElkFZkpC6YbK3yjqqGBxn73ldTumjeZOUJQngh8dxcQ01qYNkOwDdaXE3HgmHoJ9o2d8UOhHsIktqEhTMeL-OLFkNszRhiLFktaEiLDrmxtAHn1JJxW6p2Wbe-fhqF7bhqj-KPCX6hMxomgQnDLg4QI9rztCW6Sq56cN9T4flhkr5OzCnzdtNK4-q0rsJN-IOzPFlNaxweN0wKIeD191EzXi8tTI9Yf3TIYAeizpGpawp-7RqlMexc4Fh7tEdqqTSmw1V_DAWjxrmcQnS_fJIw5J_tyqOi061f1TM7u-TZPijplYwv0AJj6nnKBD2DStnqHB2-_hgODrceOhvsm2fe5H5LgvPH-85DF0eD1-Hs9eRKlxsb6b8quuj9ji4s0OyppzN9t-6j9wfeSwvl7QB-RDQ-XXTnWyhpg0uZ7N9bz64xsPrpvGx-H_sGJ7qaUuN80R-xQPCu0W8KEjzPHG9xeiT5W3LZpCNDzp6geeK0q-IzoMq5KSXe1Kf0ZsgKRJyyAYH_q1s_Kpr-zwVv-r6nbDuueL7SZJ9tH5LxfZu6zewt_-W9V_ikENQx4V3vBpeEkye9ajLvc_BKn9keX-O-7-Qw1MVExnOMQk9LztYjrMMjyXctpzYou4Tx_zE5UGR4aAme7wiNVwITLIkLgharaSofRKjxvWwXnErkE2tnubDrmMaF-EsByUUB54AGsY_mWoJT3bnCNtOEZkjMKbfpx1oRs1Y8yI2OkBDhQSOPgt3i-Be-JjlgBLSs95ZQJM75DSyAEjslaTjTNtqFBlwnVHgXdB3_spF7cdb3xFe7O6Cn_FzwktS0jM4T_IyxUVGZuTs9pxwXKYs5VlGCkxnQEkyS8uUlDVLeZzjM3GOY0ziMi6TIi0JmRZ5wlhWFzPaAJ6xJkpj2FAhpz56ptqsz_rL3ed5VmTFmaQ1SNt_cwDjkVgc4SrCWMFn1Iv6luzyzJz7ESZ1t7ZRGkthnd2N6YSTcL733YHhBnFrNO8YWCSUA6OoHO1gYd3vAZx1Rp5__-30Xof_BAAA___r3t1W">