<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/74069>74069</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
"Eagerly instantiate used constexpr function upon definition" broke compiling Qt
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang:frontend,
regression
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
mstorsjo
</td>
</tr>
</table>
<pre>
Since 030047c432cac133738be68fa0974f70e69dd58d, Qt (tested with 6.6) fails to compile, with errors like this:
```
In file included from /home/martin/code/qt/src-6.6/src/corelib/compat/removed_api.cpp:12:
In file included from include/QtCore/qmetatype.h:1:
include/QtCore/../../../src-6.6/src/corelib/kernel/qmetatype.h:2669:1: error: explicit specialization of 'QMetaTypeId<QtMetaTypePrivate::QPairVariantInterfaceImpl>' after instantiation
2669 | QT_DECL_METATYPE_EXTERN_TAGGED(QtMetaTypePrivate::QPairVariantInterfaceImpl,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2670 | QPairVariantInterfaceImpl, Q_CORE_EXPORT)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/QtCore/../../../src-6.6/src/corelib/kernel/qmetatype.h:1361:5: note: expanded from macro 'QT_DECL_METATYPE_EXTERN_TAGGED'
1361 | Q_DECLARE_METATYPE(TYPE) \
| ^~~~~~~~~~~~~~~~~~~~~~~~
include/QtCore/../../../src-6.6/src/corelib/kernel/qmetatype.h:1504:34: note: expanded from macro 'Q_DECLARE_METATYPE'
1504 | #define Q_DECLARE_METATYPE(TYPE) Q_DECLARE_METATYPE_IMPL(TYPE)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/QtCore/../../../src-6.6/src/corelib/kernel/qmetatype.h:1508:12: note: expanded from macro 'Q_DECLARE_METATYPE_IMPL'
1508 | struct QMetaTypeId< TYPE > \
| ^~~~~~~~~~~~~~~~~~~
include/QtCore/../../../src-6.6/src/corelib/kernel/qmetatype.h:1220:22: note: implicit instantiation first required here
1220 | enum { Defined = QMetaTypeId<T>::Defined, IsBuiltIn=false };
| ^
1 error generated.
```
Before this commit, this file built just fine. This can be reproduced with this attached preprocessed file,
[qt-preproc.zip](https://github.com/llvm/llvm-project/files/13526330/qt-preproc.zip), compiled as `clang -target armv7-w64-mingw32 -c qt-preproc.cpp`.
CC @cor3ntin
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vktv2zgQ_jX0ZWBBJvU8-OD4URhot3HWWOyeDIoa2WwlUiWptOlhf_uCtOIkbfoIsCEMSTRHM_N9M5oZbq08KsQ5Sa9IuprwwZ20mXfWaWM_6Eml67v5n1IJhJjFcZKLhFHBxYyxnBUVZkXD4zJPmjzGrKzrtKgJXcLOAaGFQ-uwhs_SnSCLMkJLaLhsLTgNQne9bNELh3M0RhsLrfyI4E7SErYg8YrEC5LF4y9stwoa2SJIJdqhxhoaozsgdHPSHRK66bhxUhG6Ebr2-0-O0I01Yhoc8E_hzGArq_DU9dyLGOz0LdYH3stI9D1hixm9-PC80XFH6GbnltoEax067u56jE5ew0XBM6JR9OTyYxc_olHYfqecZlk52jiTFx6-9K0U0oHtUUjeyq_cSa1AN0BovnuHju_vetzWhC137n57beQtd-i9ZYvdNZfmL24kV26rHJqGC9x2fUvYmtAceOPQgFTWceVkUH_GCN4jIPkSdvvDar18e3i33i_2_1yvD-u_9-ubPw77xZs36xWhxYtN0-Vow6sn6frf_29dnM_joP0X62c-wu6wfH_j4V6_v9kTWo66w_K6X-jUK2TNjGU-Y1KfLEoH4n3ScHXJ6o4Lo0O2_CKK-YjOqzyHPcgvbtaXVwgtzrcSSLr8lo0fx_H14KdxQtiCJb-D_xk4F8xpnJwxUFZjIxX-HP33h4ftu-u3DxK_z82rE1Tc176XEzSCesRScfmmrDODcPC0BoF_Cwhb_-qze1i_m0ivRxGlsa-_TyiS3Vh4nxRGaKSxDgx-GqTBGk5o8J4bSh_qDaqhA5JfwSrkUg2Erb5hau_Lb6iSo4yvN1t7NcjWbRVhq4a3FoHkK8KuniHo_Nfs3CrgiAoNd1hHzzbZ8_UKG23O3di36046bzNsQzesvG34MFgH3qMI9kGSK6gQDPZG14O47__hNe4cFyesoQ_HAq31WTXOAaPt9OqTm44C0VfZk9S3jJNzfRgK6IbQzVG601BFQneEbtr29v427Y3-gMI3dK_VErqZsZRmjMVhFniil5be6jiI1MAtkCwWLVdHmDpujuiAm-42n37Okmkn1fEzozAV8EiNnxSyOHrM2nIJJImFNkw5qeDx0fk6qeesLlnJJzif5fEsYZTl5eQ0x0YkjJdVmtKqqiveYEZjjlmWsLyqqnwi5zSmbEbj2YzG2ayMmpRSTEtRYMELwQqSxNhx2Uaei0ib40RaO-A8T-KsnLS8wtaGSY_SgJOwRWO0cqhqQqnvspQaPBq01rd1Sv1IaOaB2Wo4WpLErbTOPuh30rU4J5Su-RFNe_co_xEGH12hlXX4pTfQDEqEr2LotYJQNqU724HK6I84xkKqI-zcZDDt_MVRD3h92APk_wIAAP__HVRlgA">