<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/157075>157075</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
assertion failure on __attribute__((swift_name("")))
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:frontend,
crash
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
k-arrows
</td>
</tr>
</table>
<pre>
Reproducer:
https://godbolt.org/z/7TvErnPE6
```cpp
__attribute__((swift_name(""))) void foo(int *ret) {
*ret = 1;
}
```
Backtrace:
```console
clang++: /root/llvm-project/llvm/include/llvm/ADT/StringRef.h:164: char llvm::StringRef::back() const: Assertion `!empty()' failed.
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-assertions-trunk/bin/clang++ -g -o /app/output.s -mllvm --x86-asm-syntax=intel -fno-verbose-asm -S --gcc-toolchain=/opt/compiler-explorer/gcc-snapshot -fcolor-diagnostics -fno-crash-diagnostics <source>
1. <source>:1:52: current parser token '{'
#0 0x0000000004098828 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4098828)
#1 0x0000000004095c54 llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4095c54)
#2 0x0000000003fd9f98 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f1120042520 (/lib/x86_64-linux-gnu/libc.so.6+0x42520)
#4 0x00007f11200969fc pthread_kill (/lib/x86_64-linux-gnu/libc.so.6+0x969fc)
#5 0x00007f1120042476 gsignal (/lib/x86_64-linux-gnu/libc.so.6+0x42476)
#6 0x00007f11200287f3 abort (/lib/x86_64-linux-gnu/libc.so.6+0x287f3)
#7 0x00007f112002871b (/lib/x86_64-linux-gnu/libc.so.6+0x2871b)
#8 0x00007f1120039e96 (/lib/x86_64-linux-gnu/libc.so.6+0x39e96)
#9 0x00000000070e37a6 clang::SemaSwift::DiagnoseName(clang::Decl*, llvm::StringRef, clang::SourceLocation, clang::ParsedAttr const&, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x70e37a6)
#10 0x00000000070e3ab3 clang::SemaSwift::handleName(clang::Decl*, clang::ParsedAttr const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x70e3ab3)
#11 0x0000000006b59712 ProcessDeclAttribute(clang::Sema&, clang::Scope*, clang::Decl*, clang::ParsedAttr const&, clang::Sema::ProcessDeclAttributeOptions const&) (.isra.0) SemaDeclAttr.cpp:0:0
#12 0x0000000006b5c67b clang::Sema::ProcessDeclAttributes(clang::Scope*, clang::Decl*, clang::Declarator const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6b5c67b)
#13 0x0000000006b103cc clang::Sema::ActOnFunctionDeclarator(clang::Scope*, clang::Declarator&, clang::DeclContext*, clang::TypeSourceInfo*, clang::LookupResult&, llvm::MutableArrayRef<clang::TemplateParameterList*>, bool&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6b103cc)
#14 0x0000000006b16991 clang::Sema::HandleDeclarator(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6b16991)
#15 0x0000000006b17708 clang::Sema::ActOnStartOfFunctionDef(clang::Scope*, clang::Declarator&, llvm::MutableArrayRef<clang::TemplateParameterList*>, clang::SkipBodyInfo*, clang::Sema::FnBodyKind) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6b17708)
#16 0x0000000006753dd8 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6753dd8)
#17 0x000000000678a98d clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::Parser::ParsedTemplateInfo&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x678a98d)
#18 0x00000000067472fe clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x67472fe)
#19 0x0000000006747a9f clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6747a9f)
#20 0x000000000674f8da clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x674f8da)
#21 0x0000000006750875 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6750875)
#22 0x0000000006750d30 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x6750d30)
#23 0x00000000067307a3 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x67307a3)
#24 0x00000000049d0e08 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x49d0e08)
#25 0x0000000004cca245 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4cca245)
#26 0x0000000004c45b8e clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4c45b8e)
#27 0x0000000004dbfa81 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4dbfa81)
#28 0x0000000000db2c8f cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xdb2c8f)
#29 0x0000000000da993a ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#30 0x0000000004a39c49 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
#31 0x0000000003fda434 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x3fda434)
#32 0x0000000004a3a25f 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
#33 0x00000000049fad4d clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x49fad4d)
#34 0x00000000049fbdde clang::driver::Compilation::ExecuteJobs(clang::driver::JobList const&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x49fbdde)
#35 0x0000000004a03d75 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0x4a03d75)
#36 0x0000000000daf145 clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xdaf145)
#37 0x0000000000c61ce4 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xc61ce4)
#38 0x00007f1120029d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#39 0x00007f1120029e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#40 0x0000000000da93e5 _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+++0xda93e5)
clang++: error: clang frontend command failed with exit code 134 (use -v to see invocation)
Compiler returned: 134
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkWt1u47zRvhrmhLAhUZIlHfhA68Tvl_3yNkEc9NSgSMpmI5MqSWWdXn1BUbZ-4njXbbwF2sABbP4Mn3lmODMUhbXmG8HYHETfQHR7g2uzlWr-OsFKyR_6Jpf0ff7MKiVpTZgCQQa8bGtMpe1XtARouZE0l6WZSrUBaPkPgJbxy9udEk93M-BlYOa5D6kq4GXrNTZG8bw2bL0GKAEo0T94YdYC71jzGzWf1H3gm-QUFlIClHBhIECZYsZ2gPgb8DLYtkAQ3EIfBLYNxLf9de13L_uGyatRmDCnQYdKCi1LBryMlFhsAPpmP0EGAVoqKQ1Ay7J8200qJf_GyOEnQEsuSFlT1jVkty8ALVdGcbF5ZsV0C4LMn4VWFtliBZthQQaC7DjG_cwxeW00T6FFY-yMTGumDJcCWpjIZ7vKvLtBAMWwwLxkdAq87OnhLlvdQV3nO24ghnm9gYpVUhloJBwZipttnU-J3HWoR8pxrWumAVpCLChsdYRmyyBRWG9hfqQRLWClrF8QpjWjUMtauWY7E2stCceGUahqATVRvDIW78pg8gppvaucIbwp8NInJTcK7yBWm3rHhNGtAWRlMRG5q3jJ1ITtq1IqpmybNdYEH1jSE6Nq8QrQMufi0O1sCScbOJFWGq4qK7M2VW2mGk52Vnc4meyT2QTr3US_C4P3ILjlwrASTgohJ29M5VIz2w8nKziZbAiZGClLssVcgOD2LEo7WAtc6a00cFIQWUo1oRxvhNSGE-3WaJgdNINg0dIZ3AEv8y1Hg7Yg80GQRahxrlopJgyssNJMQSNfmYAAxXaDoNjuEYACD3p77_AXemmSoKTnkfpduy9PigvT2OjFWTnpBin8Yy21UQzvAJpZS3PhtqL1yy8xFkDfvH0Lz7q6A--PwEckCk-BX5QMi7p6FCu-EbgEKKlFE90oLKVd4hpQLZgOKupDDQqaFmkCF9bAz4zIN6beHbb_w4KWdsWk5XAwZiGFYXsztSEzyLzm38kPWvlx4fvI80IUIa9VquQ5QMt9MlvPwknJRb2fbETtOshUy-nMQbZTOsDhUGA6SwsCK7NVDNP1Ky_Ly6Q38zvp0RhuGM_gRjcUXAo7jGed4NlQMEriIoA4t2HvIrHNxE5s_EGsn18s0M87gclQYJCydHaZwGZKJzDtO1jssSDGM-jc0uUWtsMrm1Ddz1sXVdhfXHbtDbxlpAQos9v4VGZCi4HUJvI8SILtrhh1PtnAQzNjVJu_XHDIpSyvsOVanR0jNjh4Y0ZwHpxhZNvsvLN8_Ey3q-iE86DTaRDxZnmUxj6CTy7XWqDZoYYa6mBVbdnvtxJZsY-qXaDwYsznIVl8BPRYNQqP2ZpyrfDUxh1o5x-mjCKcVR2NVCezOP_15fWIkEtUt61YYSOvautWpc7WwVBh3wsIOa1wRsyjWNaC2HU6tL-s8mH42KK2r005Hye-vFfMbf97UciP_Q9SvtbVM9N1eXCWLp78WRuclyxTCr839e6iL5ntqhIb9oQV3jHD1APXDYDgrosf1zFBQ3JngnBkglma-qdN4PL2v8v9VxB0DVas3h0r0YiVOPaSM465MliZx6Lzz-I_R84wYL3y6puk76f9t9NiKeyo_-eCXoddy1_H7mzAbhwFlCYfArHqfe8RywV3eTgZTeBic26jf5BJDyxabj4L-P1ZD47xNkUcKL8CXY6Qjq54SFeC04SeVc3y8IeSdfUpS6uKkdPB0PF3DImfJMhDwrmM5RMJdVRcnUzJrbylVM9YbNi94FdjvuG2Yz4ZMh_GqGA_Zf5R9dz1Xhim3IHsciJ_OuKsNTNiSwTbxwtu6bgCXw0jHV_pmC-cFj_ly3ocl2JA26e7_MtZG3vc72ENp8WRNeSNWCsSis-ydrd3TtVj7_cwdQ0urLYdF_4oNXhJHJ3l4kVWD-yNla6u7ZPwWOG_1-zJqGHyPAbHJq3enSvy_5S0Ltn9rpLKrAy2R46r1GROzY4ENCaBBt75_MiVNv8lTNDA65gYHhDiwItx8IGJbPXy6VnQVdJXO5G3kDrAg3I6TKnHhoXjQlL2BxNZE-hc092ekdqwtsk9DP_qZ3UOSAdzUN-GhGAUDrbZUtkCQNATOK-E0GHoEM6GCMMoT9iQSLfmvdAGC3e38ZHLz1W6iv-2ODstBqVbSPMCJ4PTVYu3U-btWAol55S9SjBu8XXoB-WPR3NEkgIS4q932AroPR_vn1O2-PgQ4XgiGbShRXO1dR0lHMpOh3SoA07TAMMD7Qv_pYkLPU1WO1yWf2XESHW_q8qTCo3OalZGWzAPnp5Qxd_Yiec8oxsJHKQkbG_7OqFFWwytVcNq09tegjWXICDICC7LHJPXdSGGgd0t3LrOwl_I3Q4LOt7FJ62nTTtONg-zsCXg5O3dXWva44T1muz3vn-419OcrHUzvKVwMNg2rI3C3OhD90gcLku7FaTq9dshWRfNs_61YXPTF5d4l9tyIu6oQsnhAuS7zE8Ywx9dW-Aw6N-wnLqccD3PtVjhgpXvAy7P2-3r_b1FfHT44TVMiAOMokEN_j_nHM0z2Aor457BnvaCYJi3C0xD-ilrjdXwh8x4oHIQukcT7YDPHjacGZqNLhaOin1tldCo3bnSqJgpckrZpaR8l7n-nJHvMn_g2gwYOReLjx5QYW6N39wg_jqJrZv8FiotWR2Vw4ILewEdnmv6sG973wcFwonK4DMT_EYqv74OcfR05M1GObzwD9XqoRI5gG9CSfbhbu-zDP3VtUeDrMM9qP48MvMJC6FF_NULO9HdwqOrV5TS9MKr8mZKJzAdC2ShB9drO2etDVZm3VPrl5dgYbdE6I0LtYBF0An_ejtZ4W7pfl-QQaaUzSqZcy9YtIcGSFr_d28fwR_cbCHbc-tOlEE_CC3GWjM4eYNGQs0Y5L1i3q50KOKhYqZWgtntZ2f2X8m6ofOApkGKb9jcj6PYi70kTG6283BGYppGUYpxgaMwZiENUc6KMIyLghXxDZ8jD0Ve6kW-74deMk2LWUSjOKAhiVGaEBB6bId5ObXbYirV5qZ54Wnu21WimxLnrNTNq3AIHYLAQf3mtbSF7bDVkP0V3d6oefMCVV5vNAi9kmujO9mGm5LNjxZpeKsVg1LAC1-Du6lVOf_XX-Zq1Xubo38GAAD__0QhPyo">