<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/69064>69064</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang: Assertion `Diagnosed && "failed to diagnose bad conversion"' failed
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
connglli
</td>
</tr>
</table>
<pre>
Compiler explorer: https://godbolt.org/z/j8arb77hG.
The following program `small.c` triggers a crash in clang-18:
``` sh
% cat small.c
int f4() {
#pragma omp task affinity (iterator (int *p = 23 : h) : a);
}
% clang -O0 -fopenmp-simd small.c
<source>:2:54: error: use of undeclared identifier 'h'
2 | #pragma omp task affinity (iterator (int *p = 23 : h) : a);
| ^
<source>:2:49: error: incompatible integer to pointer conversion converting 'int' to type 'int *' [-Wint-conversion]
2 | #pragma omp task affinity (iterator (int *p = 23 : h) : a);
| ^~
clang: /root/llvm-project/clang/lib/Sema/SemaExprCXX.cpp:4273: clang::ExprResult clang::Sema::PerformImplicitConversion(clang::Expr*, clang::QualType, const clang::ImplicitConversionSequence&, clang::Sema::AssignmentAction, clang::Sema::CheckedConversionKind): Assertion `Diagnosed && "failed to diagnose bad conversion"' 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 -gdwarf-4 -g -o /app/output.s -mllvm --x86-asm-syntax=intel -S --gcc-toolchain=/opt/compiler-explorer/gcc-9.2.0 -fcolor-diagnostics -fno-crash-diagnostics -O0 -fopenmp-simd <source>
1. <source>:2:57: current parser token ':'
2. <source>:1:10: parsing function body 'f4'
3. <source>:1:10: in compound statement ('{}')
#0 0x000000000372dd18 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x372dd18)
#1 0x000000000372b9dc llvm::sys::CleanupOnSignal(unsigned long) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x372b9dc)
#2 0x00000000036742f8 CrashRecoverySignalHandler(int) CrashRecoveryContext.cpp:0:0
#3 0x00007f56fc333420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
#4 0x00007f56fbdf600b raise (/lib/x86_64-linux-gnu/libc.so.6+0x4300b)
#5 0x00007f56fbdd5859 abort (/lib/x86_64-linux-gnu/libc.so.6+0x22859)
#6 0x00007f56fbdd5729 (/lib/x86_64-linux-gnu/libc.so.6+0x22729)
#7 0x00007f56fbde6fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
#8 0x000000000651c947 clang::Sema::PerformImplicitConversion(clang::Expr*, clang::QualType, clang::ImplicitConversionSequence const&, clang::Sema::AssignmentAction, clang::Sema::CheckedConversionKind) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x651c947)
#9 0x000000000678de13 clang::Sema::PerformImplicitConversion(clang::Expr*, clang::QualType, clang::Sema::AssignmentAction, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x678de13)
#10 0x0000000006446473 clang::Sema::ActOnOMPIteratorExpr(clang::Scope*, clang::SourceLocation, clang::SourceLocation, clang::SourceLocation, llvm::ArrayRef<clang::Sema::OMPIteratorData>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x6446473)
#11 0x0000000005f4e2f7 clang::Parser::ParseOpenMPIteratorsExpr() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5f4e2f7)
#12 0x0000000005f4fb7f clang::Parser::ParseOpenMPVarList(llvm::omp::Directive, llvm::omp::Clause, llvm::SmallVectorImpl<clang::Expr*>&, clang::Sema::OpenMPVarListDataTy&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5f4fb7f)
#13 0x0000000005f503c6 clang::Parser::ParseOpenMPVarListClause(llvm::omp::Directive, llvm::omp::Clause, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5f503c6)
#14 0x0000000005f506a8 clang::Parser::ParseOpenMPClause(llvm::omp::Directive, llvm::omp::Clause, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5f506a8)
#15 0x0000000005f5c7b8 clang::Parser::ParseOpenMPDeclarativeOrExecutableDirective(clang::Parser::ParsedStmtContext, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5f5c7b8)
#16 0x0000000005f792e4 clang::Parser::ParseStatementOrDeclarationAfterAttributes(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*, clang::ParsedAttributes&, clang::ParsedAttributes&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5f792e4)
#17 0x0000000005f7b188 clang::Parser::ParseStatementOrDeclaration(llvm::SmallVector<clang::Stmt*, 32u>&, clang::Parser::ParsedStmtContext, clang::SourceLocation*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5f7b188)
#18 0x0000000005f7c0c9 clang::Parser::ParseCompoundStatementBody(bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5f7c0c9)
#19 0x0000000005f7d9ea clang::Parser::ParseFunctionStatementBody(clang::Decl*, clang::Parser::ParseScope&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5f7d9ea)
#20 0x0000000005eab6d1 clang::Parser::ParseFunctionDefinition(clang::ParsingDeclarator&, clang::Parser::ParsedTemplateInfo const&, clang::Parser::LateParsedAttrList*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5eab6d1)
#21 0x0000000005ed2bd8 clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::ParsedAttributes&, clang::SourceLocation*, clang::Parser::ForRangeInit*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5ed2bd8)
#22 0x0000000005e9fb3b clang::Parser::ParseDeclOrFunctionDefInternal(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5e9fb3b)
#23 0x0000000005ea026f clang::Parser::ParseDeclarationOrFunctionDefinition(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (.part.0) Parser.cpp:0:0
#24 0x0000000005ea7c14 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5ea7c14)
#25 0x0000000005ea843d clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5ea843d)
#26 0x0000000005ea8880 clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5ea8880)
#27 0x0000000005e9b4b2 clang::ParseAST(clang::Sema&, bool, bool) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x5e9b4b2)
#28 0x00000000049982a8 clang::CodeGenAction::ExecuteAction() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x49982a8)
#29 0x00000000041fc4f9 clang::FrontendAction::Execute() (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x41fc4f9)
#30 0x000000000417d9ce clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x417d9ce)
#31 0x00000000042db54e clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x42db54e)
#32 0x0000000000bef0e6 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xbef0e6)
#33 0x0000000000be69aa ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#34 0x0000000003fd9c19 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
#35 0x00000000036747a4 llvm::CrashRecoveryContext::RunSafely(llvm::function_ref<void ()>) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x36747a4)
#36 0x0000000003fda20f 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
#37 0x0000000003fa23d5 clang::driver::Compilation::ExecuteCommand(clang::driver::Command const&, clang::driver::Command const*&, bool) const (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3fa23d5)
#38 0x0000000003fa2e3d 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+0x3fa2e3d)
#39 0x0000000003faad65 clang::driver::Driver::ExecuteCompilation(clang::driver::Compilation&, llvm::SmallVectorImpl<std::pair<int, clang::driver::Command const*>>&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0x3faad65)
#40 0x0000000000bec58c clang_main(int, char**, llvm::ToolContext const&) (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xbec58c)
#41 0x0000000000ae6751 main (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xae6751)
#42 0x00007f56fbdd7083 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x24083)
#43 0x0000000000be648e _start (/opt/compiler-explorer/clang-assertions-trunk/bin/clang+0xbe648e)
clang: error: clang frontend command failed with exit code 134 (use -v to see invocation)
```
Clang version:
```
clang version 18.0.0 (https://github.com/llvm/llvm-project.git f2b79ed9c6c858426b15a0374103ab901b5b2ef3)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /opt/compiler-explorer/clang-assertions-trunk/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzkWs1y4zYSfhr6gqKKBP8PPmgkOzvZSXl27MrmpgJBUEJMAgwAeuQ97LNvAYQkgpY0mh05la1VxRmJABtff93obvwgKemaEXLrJR-8ZHmDerXh4hZzxtZNQ29KXr3eLnjb0YYIQLZdwwURXjQHG6U66UVzD9578H7Nq5I3asbF2oP3__Lg_e85EmWWbX6aecHSC-bD_582BNS8afhXytagE3wtUAu8NJAtapoZ9tIAKEHXayIkQAALJDeAMoAbxNZ-mOsBR-K8NBj-A3Jjn8AEYKTATp55SJkCdezB3IMF8LIPw1MAPBh1Aq1bBHjbAYXkM0B1TRlVr8CDOVVEIMWF-c4U8OC8A160BDAChgIjLpoD5MHCi6xYL1s6EA-wtA7AfwiAX_OOsLbzJW0rF6oXLSTvBSZedOdFc-hF8yTWYxAhuCG-lwTwGvSsIrhBglSAVoQpWlOikWYbD2Y7BQGAwMsW4J1UBeajB_CSu5P448LBTxnmbYcULRsCKFNkTQRQHHRc_xAAc_ZChKSc2a9Ku4oHM8qUBzPdVb12xD7RSPVTL_ng_5My5R9e9xJriHcmYZD9fR8vufv38LrxCi3Ug_eCc-XB-6Z5af1O8N8J1j-HHvC-oaUH7x9Ji-w_d9tOLH77bYa7TtMMs0jL2Qn0ornu8IXIvlHjp0aC-faZiJqL9mPbNRRTtThQB_OJGEPzYizmHz1qnl47Yh5zJp0x3op8JH_0hGHiwXQi6IBnbqJRS5iaY2VgnOi42BD8TKqD9L9TVhmjzMFcSu0znOmwsqRozbgkFTDjpsCDsEa0IZX2o8q2ghJVI7_zINQuNfSz4evzp7v54x2QfdlSBRAo-zUQpONCaUGTYEjVpi9nmLfWmG9tSqXsifTgPUCs0lOi6SsC1IbYkFci_KwEwobdTpBOcEyk1sPOLrgwbyIpOaZIkQqIngGJBe2UhfyoEH4GVd92-6gZzAD4bIMuEuteUy2t8_HOOJuN9f4-1lsH9NGOV-kr0bNnD96XlO2agb-uviJR-zHw18DnWiLqOi23V12vZhL4rSYB-P42T30kW1--MoW2XrTUE78B_iPw_TXGvuK8wRtEmRctzwLTnYsZnOmIinnDhW8tqiiWwK8Z9w2d7uM3AdiJWYancAbAsUicmQnWC0GYAh0S0oSuZ8J0NDL2t6EXvhUQ6r9AC9Av6phW98y4OdBZVkvQOcoKiM4J0AmRtx3vWQWkQopoOwKT3zKd3rKl_gKLXYCCUQCCbbD7RBmsqjAHxjXNfJKv0kYEQZkyjvM0eF9-6CTQ1xWXShDU2klsInIxDPyD_uPBD8HWAnOQhxPkZVHhY8gXDUGs7x7YI10z1Hgw75mpbSrQcC3_ujg1DAcndHCmWQzrHCy0930hmL8Q8ToA-xtiVaOHyy17Tp8FZ4pslQ3pgfnbDxHZIbI6SWscRVEMA7BaCSIVF2QlrAvYRLHN01Ua-w1l_dZfs35o6NRGEFTNJJ8FRpcwjmHgaBKPhymrOg2CEghEJblAPtaSUyM5joKgdCQnruQqyZMCoJJfhHwkGcI8KRzJ6VRytrf3xTIz6MrMXJkkrav0-2RGUV2ljsx87CVpEuIizt47N1-SlYcM_q65-XrTz_LmEFs4xGZ5RcLozyP2PE0l5811CRj02xOgw6QT4dM4TuPsBAFzrB7Ywy-fP9pyd9B0rPsj5lrFqfKPJhl94hgdc4DvazxE8LkQ6PULqb1ocRTuCOkSKaRz4VW5HKhyuHRyTlLHBNbOLP1sMv_o-0NH2AGmtIxeFaeF4eCEE5x1mdUX4PwViU9Uz_ZRcudDlRjNl1QQrOgLca20b180qJeTxke9gv2VYMWFnlauJXcTSdvtdHhxkGk7P72a7tdlUBPkMBi5DCZBhNPLGdxx8WM8Xj08WD0cReOpoinKL1D0L6xhinJHw2SiIc7KSzRcml0UpPV4EHdbgnuFyoaMlMvPCakeVats1fZeqmpNHFVTV9WsgCQ-q-rjbpHwIPb6cjavFRFzpQQte6VXo_nRKT0JzKpVNjVEsD86q79J0pnMMM05w_tjkEdHm_a4qgEMv44BsokByjA_72vHDfBXYfy6bGkyHLbyCVs4wMVZ9Au7uN2z9oFXrx7M32FyGTAO2mKCtioIOov23i7jp2hH72ibn_Btx0uGuuvq_qtVGOsInWIxIahMq_AiHZfEbJe-qZY_D1saO9_m4hIffSJt1yBFPrKan1qAjN_6hBQ5zPahhLmy9w5UOFy5xSCpYFmdn-uahJ8E77uTFD12BL9V9UDe8Yn77VB4UTC1UO-5-ILYmnxk9B1oNCw5NLq1KinqMiq_SeODGDneR6aIGLZ2fjxBvOlx1jRzjImUus0cs1yZLMOFQ1Y0mZ8BTM8X9qOk4nB2crJenbKprx2nbNYhoWaB_jXo8HanS-sfT_TPcHi-wLnbDr7hJtc_QefrBh-tp-MIyYSIPI6qs0Q88e4TeSHNkHHGDDx06I-efFaT6mIfrcwS_Owa7Rde9Q352HZcKJPsrp6qBgUdBtIpA3kenE9VVEj1P09DngcODdkkfJZxCd_QMH98mmzkmMPC9LAweY8FygDGQetUfHFR5NBdbS54RX4izG6R2W0CvfQiu12z626eWAgORqfOi8Max7VTld4LnYVZdQTk1eENo4_huSc2cZhVBSYuhcOAH5lUiGFynMXT-lzZZy1CRwWncophVSYxcY-nDdiDJi_7yiU_p-mV465F5kB3qpWgJHVAUoBxuGoRdZdt4-3LDRK7OnbY71oA9xlcgBdOq2trMOBzFIgmCqQFQmBH-CJ8MlHg-Opzt4X3RpvU3ejRMmylOqreC1AJ-nIisUdOYo_qqsBhYSgZyd0di66EYdW0DjNuOAf1ojlGTVMi_LyqmRvGh7Gt3yzCBW9bxKrp5D1qPalsP97p0ZHmYMSPEpStbXIYTLt_YbXC220YDj9KJCleSdPdsuh01g9WSiCq5K55Ig41jZ4HwzaAbddd5ofwbdxn4Ny84sGsQW1ZIXPuu6MK5ruTz595edweyfTUMkPxyBTHziaHli89e0Q1aV4dOs-b7qpHsANWx-fTiXMhGDhV8_-dc0wq7pNekLnEIRhVyUnijNXQm5y4Y9MJ3ZMXdYdTC_0zXedOCTPS7UquNCjsuFI-ZYS4dfcljPzMS3majp95-YlK5dBxLhzvPaBDVBvf3B64nEHrJu_NI3Grd_dYNqoRqtKTnrUcfXdKgyM1wSn-_0QerxnMBmLGzMXBJIHjJMcDyl0NskNugsjchoBvp-crVh0akwPaqfgCRNIsCYGGe71RB6HOqHBy-SML8gisVg0tdaxFQq1GEC69DhIHuXMoHL-pqOKcgEH-NTnVYvfj7rzycHvWPAG1reUBtv5p7zR-pWoDyJZqi1cEhFGsofWSAP8FKA4kIYCOyuxico16fGV5YUba3Y04ce96BHPXFYT5LJgFeuDvuxY5W1MFalhmBakKnOI8yWOYlmGCgiiLwyBCZRGEZVJCUh9M84TEmuiiBFib9uyZ8a9sZFt781wQVIGWV6Qxl_C4pNuhySwsmoZUSyp-7DKkS85NdRtVRVSgG3IbpkUWBWFYwJvNbVJHIYwRicsyzosaRnWB4jjBcRgEASyKG3oLAxiFQRiHaRSFcAZRlun5hVGYlRWqvTggLaLNTBM442J9Y26U3qZFkMY3DSpJI82dfgitc0EvWd6IW0N42a-lFwcNlUoeJCiqGnK7d7kr36O96UVz-9_fkzWK_ScAAP__LdUCjQ">