<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/143242>143242</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang crashes when passing std::string_view to asm() outside of functions, instead of reporting an error
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
PyXiion
</td>
</tr>
</table>
<pre>
When I pass a std::string_view to the asm() statement outside of any function, Clang crashes instead of producing a compilation error.
Example (crashes Clang):
```
constexpr std::string_view code2 = R"(.intel_syntax noprefix
hello:
push rbp
mov rbp, rsp
mov eax, 5
mov dword ptr [ebp-4], eax
mov rsp, rbp
pop rbp
ret
.att_syntax)";
asm((code2));
int main() {
...
}
```
Example (works fine with a literal):
```
asm(R"(
// same thing here
)")
int main() {
...
}
```
This appears to be a frontend crash in Clang. It should accept the code.
Files: https://filebin.net/hwb2cwq6kyyqz4sx
```
Stack dump:
0. Program arguments: /home/pyxiion/llvm21/llvm-project/build/bin/clang++ -g -std=c++26 -fcolor-diagnostics -fconstexpr-depth=20000 -MD -MT CMakeFiles/pxccc.dir/src/main.cpp.o -MF CMakeFiles/pxccc.dir/src/main.cpp.o.d @CMakeFiles/pxccc.dir/src/main.cpp.o.modmap -o CMakeFiles/pxccc.dir/src/main.cpp.o -c /home/pyxiion/CLionProjects/pxccc/src/main.cpp
1. /home/pyxiion/CLionProjects/pxccc/src/main.cpp:26:1: current parser token 'int'
2. /home/pyxiion/CLionProjects/pxccc/src/main.cpp:24:1: LLVM IR generation of declaration
#0 0x00005e125339a8f2 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x3cb18f2)
#1 0x00005e125339865c llvm::sys::CleanupOnSignal(unsigned long) (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x3caf65c)
#2 0x00005e12532dca28 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007e6fbc645330 (/lib/x86_64-linux-gnu/libc.so.6+0x45330)
#4 0x00007e6fbc788f90 __memcpy_avx_unaligned_erms ./string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:833:0
#5 0x00007e6fbcb68755 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>::_M_mutate(unsigned long, unsigned long, char const*, unsigned long) (/lib/x86_64-linux-gnu/libstdc++.so.6+0x168755)
#6 0x00007e6fbcb6a050 std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>::_M_append(char const*, unsigned long) (/lib/x86_64-linux-gnu/libstdc++.so.6+0x16a050)
#7 0x00005e12538d9c10 clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.part.0) CodeGenModule.cpp:0:0
#8 0x00005e1253c7bb88 (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) ModuleBuilder.cpp:0:0
#9 0x00005e1253c680d7 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x457f0d7)
#10 0x00005e1255501ac4 clang::ParseAST(clang::Sema&, bool, bool) (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x5e18ac4)
#11 0x00005e1253fa0f6e clang::FrontendAction::Execute() (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x48b7f6e)
#12 0x00005e1253f20983 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x4837983)
#13 0x00005e125407d06b clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x499406b)
#14 0x00005e1250580e2e cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0xe97e2e)
#15 0x00005e125057789a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#16 0x00005e1253ceab9d 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
#17 0x00005e12532dce57 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x3bf3e57)
#18 0x00005e1253ceb291 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
#19 0x00005e1253caeb0a clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x45c5b0a)
#20 0x00005e1253cafb89 clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x45c6b89)
#21 0x00005e1253cc46ac clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0x45db6ac)
#22 0x00005e125057c6e8 clang_main(int, char**, llvm::ToolContext const&) (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0xe936e8)
#23 0x00005e12503f1d3a main (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0xd08d3a)
#24 0x00007e6fbc62a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#25 0x00007e6fbc62a28b call_init ./csu/../csu/libc-start.c:128:20
#26 0x00007e6fbc62a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#27 0x00005e12505772d5 _start (/home/pyxiion/llvm21/llvm-project/build/bin/clang+++0xe8e2d5)
clang++: error: clang frontend command failed with exit code 139 (use -v to see invocation)
clang version 21.0.0git (https://github.com/llvm/llvm-project.git 0c495ce9c4237f0f090b672efd94839e52cb5f18)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/pyxiion/llvm21/llvm-project/build/bin
clang++: note: diagnostic msg:
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWUtv47iW_jXMhrBAUe9FFopT7qlGFaZQFfTMzqCoI5sTiVSTlGPPr78gpdiS46pbfTvdd3GBBJb4OPzOx_MSyYwROwlwj5IHlDzescHulb7_cvpfIZS8q1R9uv-fPUj8EffMGMywsTWKShSVxmohd9uDgBdsFbZ7wMx0iOaIFthYZqEDabEarBE1YNVgJk-4GSS3QklE13jdMrnDXDOzB4OFNBZY7Qb2WtUDF3KHGeaq60XL3BwMWisdIFIiUn44sq5vASOav0rw8hAtHD5SopRMf6Tkygk_9vo2fK5qoBhFj_grohTRPBDSQrs1J2nZEUvVa2jEEZFyD22rRvn9YPZYVz0iZacO_omusTavDcCOriGZXusXpWvcW41R8gBVv4pR8ugGuHGTCDOK8DJ71U9PGiwiZcCsnQA5FSlF0cPIxCvruVfDdxbnTiEt7piQ076gzLVjHASexuzxiqglsS9KPxvcCAn4Rdg9ZrgVFjRrb5I84pgYdH10g-gGG9YBtnu3m3vQ4Ds8flr8COIPED7thcGs74Fp40yvAsxwo5W0IOvRnrCQozkE-KPFZq-GtsaMc-itt1RH1WRIG9GCQVGJ99b27mHE3YgWKiEDCRbRzf6lovzl9_T5dPr9_2NzHKfOcX2zjD_jeuj6kRkSIFJ80WqnWYeZ3g3OG_w6TpzqANFNfzoK7wubtj10NJweVr1W_wfcrVsNoq3dr6Nnw0cDf0D0Aa92eOWN-ZGPLTTFq4arVulVLdhOKmMFN75tMv5VDb3do-iREkIIXn1-xKvPT3j9mT3DyALd9EfOeVALjejGaI7oxm1NwPs-UHj1efPzo4Mao5j8_PBO1R3r8Ur9EUD8JpvrT0LJLyOJZxlv5iNShm6T_oSEqKQpisrQbSsftHYBr2fagMZWPYPEiGZCWkQzREr65xeLXxf79Om3z_jjV7wDCXoMjqrBNfCWja_OhRCNCCZHt9kJhDSJooLlDcXOxqYgeDLjwxctpPUm_KQZB0TzyyDNXrbKWA2sQzR1EcqrVGDvsO9gy4g-kGPEqzBvpqjgoIdX0PM04begr1tgcuj_W34TO-lCUz5In9Rq3CqfD94bKGvShF-A0gVQWnNGc7x2UegrcHUAfRqR_ReTdQsa0XzibzFm7cLX0U47Tfz_KD-a5GeQNhVP4ySKyKRSKypEN8c83abxqhVyOK52chg7eGBUkHrIfsoFcLwQmOV5UxC83XbQ8f60ZYfjdpCs9RRuQXcGB84Yfb5EdBP4t5OpoTfnxZ2dDq0VTPO9e4auUwdYHYCvzrJWTlbwDUVlHkUz_ZIFnCrNsyS55Ontlh-PYTi-VMwIvp2gRGu-Z9rZ43mwa9hazYSLtGN39GExgrWt4swqPet3f36pz9tucIXLWxta4zcNbjb2sRXR8saI4if2yNh6it6XzQo9AZfdSq_oYSQh_y56XNKVtSs1_jLlnXoX5bOFb-V1wUOCR48cnV_V8AvIxctnVQ8tjE0fOmGfVP8JDtA-AnfRYTZ7bCknuEHPtA2I98y5pBsumS9g8ayq8tyJYFLJU6cGgyXrwPQ-lBYLdC5cK_2x69uxeYwKP8b4i1ZD_xUaB23E9OBCFOgb0IoltDQndTZn7IHxZ5D1WkkzdKD_NRDvGlDjJGtInU31II3CRdJKEhIyHs9V-OIybPntaYnxG3Rsyk-VUu3l953hJhDmjMcXuMtE1TDSpDCHu5kq03L88Bnt8gh88IHm_enMq6xJ4YJvmZ8aSoo8WvqQ-8IC_VEayySHBcIJ9ILpK4Uc5--uQ5QVeXTRIZrrEJOsJmk112FCe1Hl4MLYG-RvVD07_ztiL4qYpNUFezzHTpKcAAXMebidPnouNU2pNTs5FxuD7yXAjlH6TdA9KFH_FSpAkQGdWVCy1CDL8oLhV8rX4ZN3s5ke3zrWtr8BPwe6G-p4R71McTKmEuh1nDerWovDmzjnMKXLOAesKmpPyEzo62HDVntOfe_ocuekxlnbVow_bxvpYF5MZVx4Mpt1uFZdx2R97b039-6cTVXvVmeOgBk5Pj37kR-u0-_fk81H4xmDozeekXA_BdGsZV1VM_fNcqaK5q9p_VdV3diM7LoEhiSb7cOtQnfs-TrIb6yB9rTg8sf79u4FfdVEkMzyz1V2h4oWIf5PNo2r6ui2DVwVHgwqwr7L2uVQ7zp-eyoXQftqohswCxHrH6wxH1ouaoOZYu9ZyPCkIuxsSJRcUdJUefFHKflVVeb7fPyqqk_C2AUfP4rD5_3vmXBb779Ef57CyUj-BiLTKi8uRC5LLM7jlPHvgX6cPS_Kghv1wPc24G8k8t2L6bpKGb9QR69yN08hH2G-1h-v0H0QKacQ8M8z8ztXHFEK-QX1ot4jURPWEfOHxO-7bE3yOpo57PJkJKUs5Axvt62oXLRl2m5dveCJ84ci3AxvT0Rkb9vpCOZ6UrBHUZnFKCqjacXkekWaV9iPF1LY60XGRyd55SUHHEVlSHMUlXSKwzS9JXGhwy34NyVHcYaiMpkEZ9dVIK0TPIp8Z2PIgdbTCci8LyrHGyB_2urvji6H_pODNUy0UI-3FXAU1h_04zDy5joYwKsDtgobACxm3wjnlfABtBFKYhoGJCA74VVb3gzshN0PVcBVNyl2pV_gZhEeFwmHgsc0yhrSkIJUaUahqYs4jwpIKK-SJpxM_onpHbiSCE9HJYN8lupFzo5MSPm018Bq3KkaWje0V8bfSfmPmbaF-lHoP3O_8IZsqaz7GMSX6wTcmZ1fYnb3cVffR3URFewO7sMsLmgeRSm929_HYQZhkVEWJ5By4A2vY6ANKfI6TOKI3ol7SmhCUpKRnNCYBhBxSivCwgailBcNigl0TLSBQx0ovbsTxgxwH8YRjeldyypojb-6pHTCTlHyeKfvvZrVsDMoJq0w1lxEWGFbuF_ePb7sQfoLTiF3373hvNxuzu40X0tVM56Ln68wNfRKW3-FOd1b3g26vf9jloToxivsosqk8-Ge_iMAAP__XogSkg">