<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/54587>54587</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang] (Presumably) CTAD and consteval constructors in more than one class cause segfault
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:frontend
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
cjdb
</td>
</tr>
</table>
<pre>
# Clang and system details
Clang installed from https://apt.llvm.org.
```
$ clang --version
Ubuntu clang version 15.0.0-++20220320052914+3b2e605e33bd-1~exp1~20220320173006.195
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
```
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
```
# Code
```cpp
template<class F>
struct hello {
consteval hello(F)
{
}
};
constexpr hello hello_consteval = []() noexcept -> void {};
template<class F>
struct world {
consteval world(F)
{
}
};
constexpr world world_consteval = []() noexcept -> void {};
```
# Diagnostic
```
$ /usr/bin/clang++ -std=c++2b fail.cpp
```
```
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: /usr/lib/llvm-15/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name fail.cpp -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 -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -fcoverage-compilation-dir=/tmp -resource-dir /usr/lib/llvm-15/lib/clang/15.0.0 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/x86_64-linux-gnu/c++/11 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../include/c++/11/backward -internal-isystem /usr/lib/llvm-15/lib/clang/15.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/11/../../../../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++2b -fdeprecated-macro -fdebug-compilation-dir=/tmp -ferror-limit 19 -fgnuc-version=4.2.1 -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/fail-65fc30.o -x c++ fail.cpp
1. <eof> parser at end of file
#0 0x00007ff8d8dde561 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/lib/x86_64-linux-gnu/libLLVM-15.so.1+0xe1d561)
#1 0x00007ff8d8ddc2be llvm::sys::RunSignalHandlers() (/lib/x86_64-linux-gnu/libLLVM-15.so.1+0xe1b2be)
#2 0x00007ff8d8ddea8b (/lib/x86_64-linux-gnu/libLLVM-15.so.1+0xe1da8b)
#3 0x00007ff8e22733c0 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x143c0)
#4 0x00007ff8df69ee4f (/lib/x86_64-linux-gnu/libclang-cpp.so.15+0xd69e4f)
#5 0x00007ff8df6a241b (/lib/x86_64-linux-gnu/libclang-cpp.so.15+0xd6d41b)
#6 0x00007ff8df6525b1 (/lib/x86_64-linux-gnu/libclang-cpp.so.15+0xd1d5b1)
#7 0x00007ff8df6521e4 clang::Expr::EvaluateAsConstantExpr(clang::Expr::EvalResult&, clang::ASTContext const&, clang::Expr::ConstantExprKind) const (/lib/x86_64-linux-gnu/libclang-cpp.so.15+0xd1d1e4)
#8 0x00007ff8dfd5d57f clang::Sema::PopExpressionEvaluationContext() (/lib/x86_64-linux-gnu/libclang-cpp.so.15+0x142857f)
#9 0x00007ff8df36aa65 clang::ParseAST(clang::Sema&, bool, bool) (/lib/x86_64-linux-gnu/libclang-cpp.so.15+0xa35a65)
#10 0x00007ff8e052b0f5 clang::CodeGenAction::ExecuteAction() (/lib/x86_64-linux-gnu/libclang-cpp.so.15+0x1bf60f5)
#11 0x00007ff8e0ecd3e7 clang::FrontendAction::Execute() (/lib/x86_64-linux-gnu/libclang-cpp.so.15+0x25983e7)
#12 0x00007ff8e0e44136 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/lib/x86_64-linux-gnu/libclang-cpp.so.15+0x250f136)
#13 0x00007ff8e0f486ca clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/lib/x86_64-linux-gnu/libclang-cpp.so.15+0x26136ca)
#14 0x0000000000413644 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-15/bin/clang+0x413644)
#15 0x00000000004119bb (/usr/lib/llvm-15/bin/clang+0x4119bb)
#16 0x0000000000411807 main (/usr/lib/llvm-15/bin/clang+0x411807)
#17 0x00007ff8d7a6d0b3 __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:342:3
#18 0x000000000040e41e _start (/usr/lib/llvm-15/bin/clang+0x40e41e)
clang: error: unable to execute command: Segmentation fault (core dumped)
clang: error: clang frontend command failed due to signal (use -v to see invocation)
Ubuntu clang version 15.0.0-++20220320052914+3b2e605e33bd-1~exp1~20220320173006.195
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
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:
[fail-4786e0.sh.txt](https://github.com/llvm/llvm-project/files/8358292/fail-4786e0.sh.txt)
[fail-4786e0.cpp.txt](https://github.com/llvm/llvm-project/files/8358291/fail-4786e0.cpp.txt)
clang: note: diagnostic msg: /tmp/fail-4786e0.sh
clang: note: diagnostic msg:
********************
```
[fail-4786e0.cpp.txt](https://github.com/llvm/llvm-project/files/8358294/fail-4786e0.cpp.txt)
[fail-4786e0.sh.txt](https://github.com/llvm/llvm-project/files/8358295/fail-4786e0.sh.txt)
Files suffixed with `.txt` to avoid GitHub rejecting them.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzdWVtT47gS_jXhRSWXr4nzwEMghJlzmB0KsruPKVmWE8_alkuSmcy_327JuRgCw2X2nKqlKGPr0v11q29qMpn_OB-FEbmsWLMmrMmJ_qGNqEkuDCsrPfLnI3_mZstGG1ZVIieFkjXZGNPqUTQbhQv4Za3xquqh9qRae25X_xz7_a_7DGPCLTlKH4TSpWzcxO9Z15iun-tnSJB4vufTUXgBv6Efhn4U-n4SToMYBqIsFGM_EVGU5TQYTa7EtsU_u4XBJPL9sRdME8diydRaGIBMtul4NY5py2lVNt2WrpuuX7JRguWklrmocGErdbl1U5934s9LhVMgdKcVPLOyOS3qU8krna2UqATTglDmxn-T5Ob-All2ldCEKUHYA-ieZZXoNTkvtVFl1hmpyOc56tyfOn3180JzVbYGlXk0SUJQXuzF5GZ57xbeOd5ukZ3tDxjkbVjdTxSSs-q0DL0kYDCw49ES3rZuBOynrZgBapdwnFqTxSi6clMgR8cN2YiqkmQ0udiRnXIJ6hUPrHJzozAFq5rup4-Xjibz_h1eon7c7d-2qqdtn6sD1VE0J6PkYpTMgTRQJo0UWy5aQyiAIw-yzC2eI5KvFea7VFX-jDB27gPCONr2-UFhnjvIecnWjdSm5M9a7cDSw4V1UeeShGqTAxree2hGCrBcDyyBvMYlbm-uZvdXRHdZXRrCSNatiRKtVIYY-SjArEuz6TKPyxo-MNL0f2ir5DfBDXyWWndCw4sNZGXDqy4XxGwE4YrpDckY_8soxsUovCQtMFKSC60hoGnZKTeMO-GUJS_hzHOiuoY43-pd8d4AEZJ3dWt9BYd8mJreKrlWrAb3XXe1aIwehIiqzHZwg2SoSEI5DwgF_24rcSowESpAO1Rm3witIXiwLYUwBOGz_4An-Cv6viY0LzXGDVooARGGg7cryrShmSikEhQ1IEDC_ToLCaJtWZRC2WHOVE7ByDpBMSIAzZqVDS3Kyg0cTtgC6FlTGzFJW3JC4UEr8QCfofsoNfwBOHUBGhK0lWVjBMTQuZWjqJnZUKFUI-GjaCnYOZ4SBOo5pABaNJIq2TV52awprgVC1hXQ-SSIV5UQ0gBn0TXfyyanBiUD_c-BvbEhn_K2Q9XScQxDXSPswFo0IDgArlELeASCGQoKqJwKy63IERfy0PQ7U02Jx5ULMNO1UEgIBoDPOs-AO5egR7YG2rJuIXxbteSYK8BLF6YGhSnhDA2HnzcO99172cKlQEKtzhpWgTZdhn7klZ6337rm4I-L3pQOCQ5oBbuFjx69ryBb58l28f-M6Yld_xccx0yRNngLHHv-Ev_XHN6Bx4uUbNZ91dJfIPSJtU8Ziy2-8KcAnj-6l3e_ncXTDEOLHCK34BifIR5wJe0QOOULnlc4P65KTDTBFAYAK99XoNE89kIvQC_ebqnLpS6gFoMPLiugku9TJo6xPAciEBjmq9X15eXq0-yPq9X8z9ndIlxdLj6vZvdfgD7QlsShgSfGUDpOCh75HsDfkl68fXB1mSXAzAKFh5AF5vWWKQ1RmhmCMVwWBIOyWwmkI5_4Wx9-JkWR5mmei2QcEJspIVNFM1Cwe7lVoH2bx5YuGaaHRYp9X4FkEAkhv44xIcJarDBsodFb2wnbgYmbmz--gA94WnpgdBf-VgQ5INgXPggxeASRh5k4BfGua-7LNdjHJ8jHFRxSX-e8C0UGTAYowseKYmn2TgFh54B0dERahOEkirhPVlDza0hVYgWFzc_5tMZeQpCPb_kEMVAZsImPJSjGUyHi4hWUbViC3NdaGRJLPIfdcTGgngypszAOXqOf09Rz2DygPh5ST8IkC95LHSwsG1rY5DH1QPQXTmdZV1BV929Y5EAQmelLrCZYY-xcmD67-k7orjK9Xxytmt0vgQQU7IbYwuTpigOdY17_hWoFrdpuer8KQMKBCtKBCvIkTybFMZh7UbM-EsgWcUANDPGt1we89cK82udO4QriMAW-A2DTAbBozNg4OQZ2i_ENlDk8AwvXaTSTsjr8fS80FiXA-HAhg7B0HDqFn4SZXwyQ4W33WjQzvrti45EK3oH1uKEPqSorxsBvACgYABI8j8TkGNBC4Rk1-QlEH8ISJtMUWA2whEMscRyADw-Ug1lXKNsgabg4rZ_nwePZvh-vXwCcAd5BDPaLOB1zNnRGi-wA-6G_xAxRPhErnH0A5xhQcjbAuQvi7ge1GkOo4sEKL1yDrDxTiv24EwX2IDZM7aLMDDsRGGgGYzCADYAB3J_eQi1IB2GAMXmEMZhm2Rtp4pYBzfFjmqk_ISjzWwnDvgHhQeyfsHHuZxEkXzySFZyhMqueyyLrSmzLLNY4R_WX4uI_y_1n6EVYNXPd7Ypl9-rWIh2Pw6FEcYjPA_t0KBd4SiCIY_w2yezOvWQ7kyS2hMWXrsELKrZIhDNlOPy6hkoJJ-_FGvsP1qChnISEhcw5VB-2ayHyFwi7hkTRu-eOqi1KRQ7bLU9tCzMk2mEX88GOCQGF4sGPpv-anu5eSY3EHuCMHIp_Ums7s7OAD_we9eT6nthsuZxdfiLLT1dk8fXm5uufn3-7JovPN1f3ZPnVDl_8fk3urm6_3i33najbUz2tVGMceLavtV8ABmK7OTDLzJ7k6-VPLuytJp6kY-F7euMZKCFsh_LNjTy812AfL42SNJyGuwvTkPTe84eMMe7-Ks7BI8472k886AXlDK58ewneqtxfZWInu8D_nALjnyjwnzOa5CdGY58L3EJ0V9heH_kOTAgox64c-xjYmO2lX5fmU5cRJZAVNgHNRtTeWX4e5dNoys5MaSpxDsK4A03mGB3BGXVXQ6T-ge51uZzNrRMeuvhHTUwN0RMClMJuNWuIbARx_2zgDIOsFmsbyc86VZ2_vy2exEk6OducZxM_KuK4CCdTn0G9lBZ-KLIkjfxxWExhScUyUWkUaBSGOyPdpQUYAgnPyvM-JE-CaQAx2YujzE-KNJ1mvAhYko8gj9XYztj9W_BMnVtkWbfWMFmV2ujDJEgLiUVYNSJ91pmNVOf8W56dWQnOLfy_AQF0mts">