<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/121980>121980</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Assertion failure when parsing invalid file
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
MikailBag
</td>
</tr>
</table>
<pre>
Code: https://gist.github.com/MikailBag/76a27cb9bc497cb608adf358bc890c86
Error:
```
clang-20: /home/mb/projects/llvm-project/clang/lib/Sema/SemaConcept.cpp:1629: static std::optional<NormalizedConstraint> clang::NormalizedConstraint::fromConstraintExpr(Sema &, NamedDecl *, const Expr *): Assertion `E != nullptr' failed.
````
Full error:
<details><summary>Details</summary>
<p>
server.iim:2:38: error: expected '='
2 | concept __has_member_difference_type ;
| ^
server.iim:3:70: error: expected ';' after struct
3 | template < __has_member_difference_type > struct incrementable_traits
| ^
| ;
server.iim:5:30: error: expected '='
5 | concept __has_integral_minus ;
| ^
clang-20: /home/mb/projects/llvm-project/clang/lib/Sema/SemaConcept.cpp:1629: static std::optional<NormalizedConstraint> clang::NormalizedConstraint::fromConstraintExpr(Sema &, NamedDecl *, const Expr *): Assertion `E != nullptr' 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: /home/mb/projects/llvm-project/build/bin/clang-20 -cc1 -triple x86_64-unknown-linux-gnu -emit-module-interface -disable-free -clear-ast-before-backend -main-file-name server.iim -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fdebug-compilation-dir=/tmp/rep -fcoverage-compilation-dir=/tmp/rep -resource-dir /home/mb/projects/llvm-project/build/lib/clang/20 -internal-isystem /home/mb/projects/llvm-project/build/bin/../include/x86_64-unknown-linux-gnu/c++/v1 -internal-isystem /home/mb/projects/llvm-project/build/bin/../include/c++/v1 -internal-isystem /home/mb/projects/llvm-project/build/lib/clang/20/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-linux-gnu/14/../../../../x86_64-linux-gnu/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -std=c++23 -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fno-implicit-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fcolor-diagnostics -disable-llvm-passes -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o out.pcm -x c++ server.iim
1. server.iim:7:36: current parser token '{'
#0 0x0000622d8f86b918 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/home/mb/projects/llvm-project/build/bin/clang-20+0x3e92918)
#1 0x0000622d8f8693ce llvm::sys::RunSignalHandlers() (/home/mb/projects/llvm-project/build/bin/clang-20+0x3e903ce)
#2 0x0000622d8f86c108 SignalHandler(int) Signals.cpp:0:0
#3 0x00007b2696845320 (/lib/x86_64-linux-gnu/libc.so.6+0x45320)
#4 0x00007b269689eb1c __pthread_kill_implementation ./nptl/pthread_kill.c:44:76
#5 0x00007b269689eb1c __pthread_kill_internal ./nptl/pthread_kill.c:78:10
#6 0x00007b269689eb1c pthread_kill ./nptl/pthread_kill.c:89:10
#7 0x00007b269684526e raise ./signal/../sysdeps/posix/raise.c:27:6
#8 0x00007b26968288ff abort ./stdlib/abort.c:81:7
#9 0x00007b269682881b _nl_load_domain ./intl/loadmsgcat.c:1177:9
#10 0x00007b269683b507 (/lib/x86_64-linux-gnu/libc.so.6+0x3b507)
#11 0x0000622d9187c889 clang::NormalizedConstraint::fromConstraintExpr(clang::Sema&, clang::NamedDecl*, clang::Expr const*) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5ea3889)
#12 0x0000622d9187bad3 clang::NormalizedConstraint::fromConstraintExprs(clang::Sema&, clang::NamedDecl*, llvm::ArrayRef<clang::Expr const*>) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5ea2ad3)
#13 0x0000622d9187b90e clang::Sema::getNormalizedAssociatedConstraints(clang::NamedDecl*, llvm::ArrayRef<clang::Expr const*>) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5ea290e)
#14 0x0000622d9187c490 clang::NormalizedConstraint::fromConstraintExpr(clang::Sema&, clang::NamedDecl*, clang::Expr const*) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5ea3490)
#15 0x0000622d9187bad3 clang::NormalizedConstraint::fromConstraintExprs(clang::Sema&, clang::NamedDecl*, llvm::ArrayRef<clang::Expr const*>) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5ea2ad3)
#16 0x0000622d9187b90e clang::Sema::getNormalizedAssociatedConstraints(clang::NamedDecl*, llvm::ArrayRef<clang::Expr const*>) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5ea290e)
#17 0x0000622d9187df29 clang::Sema::IsAtLeastAsConstrained(clang::NamedDecl*, llvm::MutableArrayRef<clang::Expr const*>, clang::NamedDecl*, llvm::MutableArrayRef<clang::Expr const*>, bool&) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5ea4f29)
#18 0x0000622d91e9d4ba clang::Sema::isMoreSpecializedThanPrimary(clang::ClassTemplatePartialSpecializationDecl*, clang::sema::TemplateDeductionInfo&) (/home/mb/projects/llvm-project/build/bin/clang-20+0x64c44ba)
#19 0x0000622d91e02c29 clang::Sema::CheckTemplatePartialSpecialization(clang::ClassTemplatePartialSpecializationDecl*) (/home/mb/projects/llvm-project/build/bin/clang-20+0x6429c29)
#20 0x0000622d91e13e0d clang::Sema::ActOnClassTemplateSpecialization(clang::Scope*, unsigned int, clang::TagUseKind, clang::SourceLocation, clang::SourceLocation, clang::CXXScopeSpec&, clang::TemplateIdAnnotation&, clang::ParsedAttributesView const&, llvm::MutableArrayRef<clang::TemplateParameterList*>, clang::SkipBodyInfo*) (/home/mb/projects/llvm-project/build/bin/clang-20+0x643ae0d)
#21 0x0000622d9167eee5 clang::Parser::ParseClassSpecifier(clang::tok::TokenKind, clang::SourceLocation, clang::DeclSpec&, clang::Parser::ParsedTemplateInfo&, clang::AccessSpecifier, bool, clang::Parser::DeclSpecContext, clang::ParsedAttributes&) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5ca5ee5)
#22 0x0000622d916a2089 clang::Parser::ParseDeclarationSpecifiers(clang::DeclSpec&, clang::Parser::ParsedTemplateInfo&, clang::AccessSpecifier, clang::Parser::DeclSpecContext, clang::Parser::LateParsedAttrList*, clang::ImplicitTypenameContext) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5cc9089)
#23 0x0000622d9166d372 clang::Parser::ParseDeclarationAfterTemplate(clang::DeclaratorContext, clang::Parser::ParsedTemplateInfo&, clang::ParsingDeclRAIIObject&, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5c94372)
#24 0x0000622d9166c421 clang::Parser::ParseTemplateDeclarationOrSpecialization(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::AccessSpecifier) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5c93421)
#25 0x0000622d9166bd65 clang::Parser::ParseDeclarationStartingWithTemplate(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5c92d65)
#26 0x0000622d9169c1b4 clang::Parser::ParseDeclaration(clang::DeclaratorContext, clang::SourceLocation&, clang::ParsedAttributes&, clang::ParsedAttributes&, clang::SourceLocation*) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5cc31b4)
#27 0x0000622d9162a1d9 clang::Parser::ParseExternalDeclaration(clang::ParsedAttributes&, clang::ParsedAttributes&, clang::ParsingDeclSpec*) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5c511d9)
#28 0x0000622d916289b3 clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&, clang::Sema::ModuleImportState&) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5c4f9b3)
#29 0x0000622d9162483e clang::ParseAST(clang::Sema&, bool, bool) (/home/mb/projects/llvm-project/build/bin/clang-20+0x5c4b83e)
#30 0x0000622d9053a1cf clang::FrontendAction::Execute() (/home/mb/projects/llvm-project/build/bin/clang-20+0x4b611cf)
#31 0x0000622d904aaf7d clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/home/mb/projects/llvm-project/build/bin/clang-20+0x4ad1f7d)
#32 0x0000622d9061a79a clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/home/mb/projects/llvm-project/build/bin/clang-20+0x4c4179a)
#33 0x0000622d8e5648a1 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/home/mb/projects/llvm-project/build/bin/clang-20+0x2b8b8a1)
#34 0x0000622d8e560989 ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&, llvm::ToolContext const&) driver.cpp:0:0
#35 0x0000622d8e55fa96 clang_main(int, char**, llvm::ToolContext const&) (/home/mb/projects/llvm-project/build/bin/clang-20+0x2b86a96)
#36 0x0000622d8e56fa47 main (/home/mb/projects/llvm-project/build/bin/clang-20+0x2b96a47)
#37 0x00007b269682a1ca __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#38 0x00007b269682a28b call_init ./csu/../csu/libc-start.c:128:20
#39 0x00007b269682a28b __libc_start_main ./csu/../csu/libc-start.c:347:5
#40 0x0000622d8e55e565 _start (/home/mb/projects/llvm-project/build/bin/clang-20+0x2b85565)
clang++: error: unable to execute command: Aborted (core dumped)
clang++: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 20.0.0git (https://github.com/llvm/llvm-project.git 17c8c1c5098bd1fa68809d686867d01d56d5e564)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /home/mb/projects/llvm-project/build/bin
Build config: +assertions
clang++: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang++: note: diagnostic msg: /tmp/server-7f8035.cppm
clang++: note: diagnostic msg: /tmp/server-7f8035.sh
clang++: note: diagnostic msg:
********************
</p>
</details>
I am using clang which I've built myself (from clean source tree), but failure reproduces on Godbolt as well: https://godbolt.org/z/E5Ev993hK
Context: I was trying to reduce reproducer #118137, but apparently ran into unrelated problem 😐
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsW1tT6zi2_jXmReWULd8feDAh2U0Nuze1YbrnLSVLy4kOtuQjyVzm15-S7OAkBDYwmVNT53QXvUlkaV2-ddGStSBa87UAOPeSCy-5PCO92Uh1_p3fE95ckPVZJdnz-Vwy8KISbYzptBeVHl56eLnm2szW3Gz6akZl6-HlyzIPL7OU4IxWRUXjIqNVGuSE1VGSVzQvApqnXlB6QblQSipLMSi9NBh_gpI2RKx9HFimHl5uZAseXraVh5edkv8F1GgPL5vmofXH7x5eukV2mNt5t9CS8ddcCgqdmdGu86IyTHFh6WpDDKdIG2b5R6XsDJeCNF40_12qljT8n8DmUmijCBfGixZo4OBmH59in9RKttPY4qlTHs6tGMjDqYfn6HfSArsE2iAPl3aA2tnIzhxGnHil1qCsRMhLgwXycOhFl0j0TdMZ5eEM1YQ3wGZ7yDnwvKBc9k2DYAfbaM7AEN5oL1p40Vz3bUvUsxctLrfDcw8vp-FhTTd-CkoN6gHUjPPWi0rsRWWUWyG3LBA8dUANMOThzIsu7b9BiRBCGHmZ09BaAK1WG6JXLbQVqBXjdQ0KBIWVee4AedHFuAi5RR_6z0sWh-JFXlRmwTviXVj4SG1AIW1UT83INnJsDbRdQ4yVZ_4rgRcjAcQFVdCCMKRqYGVNb_TnlfmYsqcm6mDfQzCxKL6H4I6BkyMG5sLAWpFm1XLR688ZdtDxrwTwmQRwc70obxdI91XLDSKo6tdIQSeVQUa-yto7CdsC-BpHrnUPFl9EBLOu3fQMkNkAooroDaoIvTeKULCydwo6JSloDQxp2ath2K4kWkvKifUa1QukqeKdsfLeGkLvEevbbkhPwcwLihsl14q0iKh1byNJf8r2Vc8bZn9zsfUEHwfIpzREvlG8awA95ekqjf1e3Av5KPyGi_7JX4se-dBy47eS9Q341nlVTSggn3Ft49mvFQDyaQNE-UQbv4JaKvAtDiAY8lvChV_zBnxBWkBTLCG_VdBISqwdLQNoUMcp8jtO_QYeoEF4-MK133FAflsr0oLfSSeGF12SpkF-3RKz8UEpIZFf151PpbAWMF50KQXyayF9JXvBuFj7di7yW-dUNjlJ5ZOGEw0a-XUvHrlgvstT2osuMfINUWswPu16i5Cfxsg3vQA3sAYBygrMoOrXa1D2EbcxcLlmFfJrN-5T2Xa8GbRkXLkEsTRt5-Glgg75NZUPoMgafjlTweBD9uHnrT9E_jYPWPs7GAVpfK6ftYH2qx41m9nAGELBw8u3XMly9_CF-1k-hP82_qdmcgjcxOw49V4ru0pS0nxwqmOwpnQCbxe0MN7qePDPkbmvucGT_UBfc31lsJ2Yf2_151kg3-0jl6NhcORio1NAbf7zW0KVDV23n_oNt3k6LJBfr0VP_QdQmkvhRZfxDM_CIZ552zWcvuQlG7z6nne-ZMqnG6D3Phf-uq1tdD09-fBktzguhZ2494XKRiqfcbIWUhtO9ZTYBm8gesgNhDGl-Rr5l6vVt_l89Vv5x2J1-Wf5c4lX8-XVqrz97kWXIfIlkr2ZdbRF_hMaNd7Jel5Qhjaj79UUma0pUpvTaa8UCIM6ojQoZOQ9CFdWZBdjWeHhKEDBUxAEQYoxy-s8rYowR267cnusftbDhxvFhXH7yd2wI-XTJEUeV1IbBaQdd167R-MCeTj_FzcWD18ETxEUuAhzu18PQocHQhcRhWNC_-zFLV8L0vxGBGtAaSfQKeUKIovFVi58IBcNgxztSeDhfMRmGNZjrRS4_wcq0Uglq3BapHmcRDgYRR6i-0isNryiMy1nqRPMLZnEivcJFlCFFK1WndkoIGx1z5tmZaNgKKxdKWRTguiMTTq702bUi8o4tm6WjsSTjxAfo_tdspk96YRbENJjZHfXvEsrL3ZpZYeA4hSQIlyDI6KdJbaJUD9rBp11hE5q_mT3SzvTkbUleblVPN-nivO8rhGpbDHo6Bg2WMsNDVKFLj6H5cWr5WGFVqJZNZKwFZO21kHDZuR0tMOtXlMy0ArDzApjTWwDItinFlVJkH3OZ9ySwWcswd0QK8I8o3le_Atl-c7K4bzg0sQuvW2tvi3Vp0euXndV1lC0nyp8EyBRnheTzvhA54qw6Ks6668oPaWwUiny_BNqL5q_iUS0OC0YmLBoAiM6BKMIAB1q5D6twUzIlC9nkQmPAyz-w7QuApi0jg_dPi6C_4NuHxfBpHPyl9tPYKT_L90-O9Ca1bg4rvWVLs01EG1K_aIpsI9q-r13B-KPKvxBr_k01UrKxrnlKRGNa7yzl-R7iELB4oocR5Tr71LBbQeUD750tyHiRnH3hngP13lDtL4bX5veEGU4aV7WubrteCbRL7y2iy-B9dQuuBK1PC0SaUzjuCITEsU-EgGmb_nW3J623tXvy3icUD1c0B1D42BfvTCCgB1Xr6Tmh9iT-T3lbqnsYLRlL9ztERvOVXu2vSPrv2v4Gxfs4MGte71zPb4T-8zD-T_-4Zhb6V4n763sV6wUQpqRwOGsG3vmZKUxile9Af0Hh8dtFKafiN4d65IWDKhr_kZ6uL3n3YVkz4NHn9bkEYGATSbfr43TDACSV8qrnc_O6M7YNYeDusDI-1FVez7_rCGtgx-30ysh2IvltjG_N7-kFPaE3KbJN6luec-lMPB06JiHHnDifEtJApBMNtmv3VOCg_3zyis4rPREOUxflD7Ysf-t4H4d1HHm9RAWI8jbuNiffzW-27p77kCQFl6ontAQtAh2DlF4_9yQpizK8EcNUdYG1BbJ17aws6T6NTIfsYidw8Xakv1ZXl39qAZVD6cdBt-v8twHTH9C6Is4yvAEfXwAPY1x-C5GUznwYoIf6r1N6VdW-A-HK4pxOMGVHMBVsfT9NL6bMowtN8T6T242X3PYL0F1SjAwS3fy5_65Jy1oWMUfBeN_20d-PeOQx0nPz5RGYRVP0O0fnlJMQvb-1rN4Gl6HvgnhKSDYSXDDHnZaDJIwZDtZPz_AIC-q6P3UI7treIBmqNB3lf_Rkf_u4cao_UrQTvymZN-5GnFxxOYvhfZ3d5Fz1XZSmVvjIvO0sRPXRTW9M8DFgfJxHsEr5cvbuzffjWwLreH3KQWt8mg65u9d9hRBEpGQ1ruCLpWNWMFKdzbcnp-B9i65nVCyuErDkNaTZHsldRATUmd7p6i5u84GdSW0IYLCnmyjuHvoHqhyUgeICQvrbDoQ7N37FEEakqwg-6_ynJyTEg8vmSl_T8mTxmxM4zArpoN5tFup5ZCkcU5CRGm4aoldnR9_QbUhr1_S7I3hOXqQnJ1WeFzlVU6mzTuKD4QPirxAW5zn4Z2LpB0VblvSNH8ANVLZovioJgcHU0tj3MJ2jq4FYoo_gDq4uLMyJfsyJTUp0sENtpBuz-8bohw-5cc4ng7ElBTpBGJ6AGJN4gy5i6eTcSxSEk_XSodXcZiElKDVquEVXWlbU60oaZrVy-UX1f3ri7nx1u_YotnGi8osdt2JA8fDazqC8wq5-Vxwc8hk-Ggp-47ycNeGcy8q8dbMhzd3juKeDsfEP0o5ijPXBugIx8GB_0CSJmggeUIXSJJt3Te2obgGl90exF6QqgFkJIIhoBCVbUsEc-1ylVRDf2JOpQLXXQbsfYJuHNVjSt5SGxvrEOsdr-Ea1tLtNSD_wY0BIL6TLV-YoLGVA-FgFsyCNXcIfa4Db2ZXhRnNaUiToMgrFtYkzfOgYGme5mnGgpAlKbN2GMu9O9fCZVV6szEpKO_cZTRyXWh26nCPHJQurTcNsEuuvtxzF5QX9ptNDzVfD2QuyLaFUb82gpDG9ZRPfSmo1cPCoNwmoS_9uIblsSWyvLsr57-hu98WaPnj-vrHn1e_f0PLq-vFLbr74YYv_v4N_Vzc_Ph557lexJtj_Yy5tunuzZ7GlwkKkOv2A4aIGeh9XO1tH9zQNuNndR5EiU3n7QnI6M1nTXAKKwxt5NaJXnrKPbycWtFHRleItKi3x4IxJB83nG7QlYezB0DWzQxqnzU0tY2mWskW0QaIGO2DjAJXTdpStTcufnsFyFmS9RQ0kgJ9k6ySjUFEo0domiN_zzBMmEm19vDynx5eLpLFQ1FEm78NYm7PjVGJrtAj0cioZyuzkUiB5TNxVK4dKMzDKNtKRbqOKBCmeUaKCMSFkagXChrnLp2SVQMt8paBVyy9IveKAJ2x84gVUUHO4DzMohRnaZzmZ5vzMEhCltO8qGnFoiglQZoASQpS1RVlSX7Gz3GAkyAMsrAIwiCdZSxISJZUVRpVpI6wFwfQEt7MbExblc9c1-95iMMiD84aUkGj3V-FYCzgEbmnHsZecnmmzl0iqPq19uKg4droiYzhpoHzqXl5a4zHDQjX8mUR4-KBNJyhmjdw1qvm_Os9yqPAD-f4fwIAAP__kja0uA">