<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/126720>126720</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[Clang] Frontend crash compiling struct/class method with explicit object parameters
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
R-Goc
</td>
</tr>
</table>
<pre>
Frontend crash regression when compiling this code. Required flags: -std=c++23/26
```cpp
void operator*(auto) {}
template <typename T>
struct Quaternionz {
void inverse(this Quaternionz<T>& a) {
a.inverse() * 0;
}
};
int main() {}
```
Quaternionz can be a class as well, and inverse can just accept ``` (this Quaternionz& a)``` and still crash. Function/object names can be shortened.
Looks like it is an issue with parsing explicit object parameters.
Godbolt link: https://clang.godbolt.org/z/1cYvc66j4
[Full godbolt link](https://clang.godbolt.org/#z:OYLghAFBqd5QCxAYwPYBMCmBRdBLAF1QCcAaPECAMzwBtMA7AQwFtMQByARg9KtQYEAysib0QXACx8BBAKoBnTAAUAHpwAMvAFYTStJg1DIApACYAQuYukl9ZATwDKjdAGFUtAK4sGE6a4AMngMmAByPgBGmMQSGqQADqgKhE4MHt6%2B/onJqQLBoREs0bFc8XaYDmlCBEzEBBk%2BflK2mPaOAjV1BAXhUTFxtrX1jVktCsM9IX3FA2UAlLaoXsTI7BwAbqh46ADUqAkxTETEAFQQTF5E87smAOxWdwAiJhoAgq9vBJgsCQbftwAzG4CABPQ7MNi7AAqJkB2E%2BE2IXgcuwAil5jjEGGkAF63B6fXbE3ZbHa7EIbGJKCAEBB4BTozHfYg4gS4uFuWHw8wANl2TBu9ys7xJYoFADpKdTMBAbqddho4SK3mL7i93urlZ9PiECLsWEwQnKCY8NW8OItaJwAKy8PwcLSkVCcNzWay7BTLVaYW5mQE8UgETSWxYAaxAgJtErMkkBAE4AByAlNcG1xu6A/ScST2kPOzi8BQgeLBx2W0hwWAwRAoVC/OgxciUNAN%2BixZAGIxceNcJgKJT1Ph0FnFiCRfOREJ1UGcQNT5jEUEAeUi2kqZcDrbYgmXDFos/LpCwkS8wDcYloxe4vCwhqM4iP%2BGIG7wVOvTswqkqV3WTr1bT5rQeCRMQM4eFg%2BYEMQeAsHOvBUsQkTJJgTw/IYwDAUYIaLFQBjAAoABqeCYAA7suELwTIggiGI7AtPwgiKCo6hHroXD6BhKDupY%2BggcWkCLAcHQMNeAC0EzoHCTymJY1hmE6qCITBWACXKrTtGkLgMO4nhNHoQTTEUJR6EkKQiaMzQ5OZaS9MZcwaa%2BnSTJZegVFUzndHZ/SlEM3SuRxExeUZPkSIsXorGsYXZhwdqkA6imcLsqiJryYm8pIuydhhuw9hKXAShouwXAOMQiQoNwQLghAkH6AbzLwZZaPM4aRgViaxpmibpsmGh3FwZgxbmpBwTa8QJbwLocEWJZBjhlY1hASDLAQCRXM2ECtgkjbEGErDrClaUZVlXbAMV0FeAwYYNaQmD4CcOx6IxwiiOIXC8tR8hKGo%2BbsaQpFgQk8FWraeZHlNy5XGt%2BqoFQyWpelmXZUYuXxvlhXFf2g7lZVHhtjEdVcDdTWhqQCCYEwWCxOp1ocMNo3jfmU0zaWOGtYCZgxhoXCJomdyxpINq8oCvJ3DFgJg4l01zeWixVlAi1IFtO0bcr7YoKdAD6WNlWkCiaxdV3DrQo6UBOR4LjOVGW0uq7rg4VHbowBB7ge%2BYnmeF60FeVF3hhj5Os%2Br7vvmX4/t8VEAbTTrAaB4EYH%2BjUwXBN6kIhyFKGh96YSEoCy3w%2BFESR5GUanz20W90jPcxP1sSAg2ndxcm8bHalCQk5WcBJBBSYCMk8RY/qTcpOyYG3jkeX4ECuAFt06d5sy%2BWZeTpHpYzWSvC8mYFbROQwXQjGvVnuSJB9TIUoWBS5R9uZMW9zOF3pRUTMVxRNBYcPDR1I6dmOlfUetdiG2usVaqJxCbEzZqQCMHMJQ2nTANeMkh/SJnjGYD6tN6YgDGvFJmhZbCzRJnLRWIAVrQ1VvWba7Y9psE4IdRGJ0cq0mRFdG6d0aoqSerICu9Eq6yBrqxJ0uhBoAyYEDG8INYqS0mpwSGq0rj7DhvQ46yMzolWxoA4BuNKE7TqmYSBstFjk0pgMGmOZeAM1weDfBxZWaGOgZGTm8DJCIOQYCVB6DxbSI/o1KBtMzDeOZjLZqixEIpGcJIIAA%3D)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyElluvqj63xj8N84asGSwIejEvWk6CIqIowl2BTkAO5VAE_fQ7Otf6r__e2W_exMSkHePH88Bo-uBhKLKGkC9uibil9oFHltP-6_jLpMlHTNPHl9HThpEm5ZMeDznfk6wnw1DQhp9y0vAJrduiKpqMZ3kx8AlNySd_JN1Y9CTlvyucDZwI-V8DSzlRSziAOICAyAEDyJwAOVn4-SVtywnwTouUpy3pMaM9ByAHVnhklANrnlMQp2ivFgEyUrcVZoTnRJU9WtLgmvA-J-qcAAfWjwnjvREz0jcFbZ7vVgHyPM-_-UVzJ_1AOLB6S_5XJSeqbwqQefznmQLk8efflvcygLzAiX-gv2Up2s8SJ8CiYXyNi-ZP_T_S_7jlBPhvgQlu-JjwmE8qPAw8HviJVBUHVB43_-h9V93GgfE4SUjL-H9o_P9n5beHv0Uv1MCKqvr5kp88b4xNwgracMCg8Y0kjH-9yOGPnCGnPSMNST95ToA7SsuBr4qS8AXji4HHDV8Mw0j4qWA53-J-eE0BmduqSArG_ya2uMc1YaQfPn_ejUnTmFaMr4qmfE1Gzlj7GhEOGBwwkgo32Wf2U_NJ-4wDxpMDxiIJ74ks36QXZImMsar47N-kpcaB1X9ncUB8ciJ0w12WQwN16dJTZxhOhxA5ao2OKdpBY-GpCcQHXYXOc0LMgQr0JoM5HnrAY7beMi_U4WMoYsG7QnVeIQS3FDU-hGe4aSfo3KER-idmZwvNgi1UQ-iN4VhW6wj6k7a9pdA0zgxupcHUZSxBp8mcGqLHIUNm7Xgns_Og1mXbXJecDZM5sHwdG4M2duftED3qgxAbyeqKQ62uVKQ_dYTKd9V3tQX1AbvwdlkgeM3PvjGz_rq4XUqmDs7auooGBGdY7TC9Dr6loAnGXS7JUDt3sJx93deh4Xm-sdRXylBDdw7SCRZ2TmHWre_IzgbVi7_ZBJ-mpEJ08BRnXygQdnaJgP4WoQPrmiXjBItqebvppllCQxaR_H2NdTGKN1jRrdi0tyrUEZKQT5-b7zCTspM0GmOwmVYT3FfAR-P6MSizHVIDau029R0E4y5NcyqdtmK9U4q1OPZVtD4UurobAn3ymq0arvbByrUYtie4fawOU7I7lRc12T8D_FCQv7vgMFjWnr46Z7p_CuYQ4hlmNtN7pywR1CWIHrDaJ-ZiHuXXKJ2Skw_Kg_ssVsjLyA7NIBDyKYDTEdKLygHDzeakOO_h_m2_mCNoWnNC9omdbW1_ccgFozEK9fjtHnV7cTYTb-8vb_pZh-RcgLKLEq2Pw6y-agYdOGDsWnUqT6tJS8KKzkS6q1PeOVJxePNNy1Smi3v3h6kru4sY-P0i9pe9R9Sj4zkSMbJ3Xag7HoHDxr2j8-CVvm1n_sQBwwonDZ5DC-8MD90gpBB1RA0hVIZR302-lWWFaSmQHaas2KpUzjc9vWoyyrfa2IZvdpYlQanuYLLxnD2BqqA_6Ub1H7UdLvJalzvV8lEA1eu295lZ7jLHlZp8v6Ge7-tn-yjr5dYrsPP0lm6ET2snSiaM3-jm5NsRyS7G-dmkm-j1ASrdEU_jcdZnco4O5ckarrQ3h_Aa5VPalVAu6mQ3dIXdP8J61VrjI83zcVrn2ys85XScrtB1vMKj-8l7HfxyI8P4uZuiCB8cCR-zS4Hnti7idqjNXDSmKJvjukWTj1eeHU87muiBHaFbXoWLHJ60HfTU49UBusqy8hbrpt5rvVrhc3SprjF0LoJB4BSGe-zVmqQm7ixb81QUrnVVV-y4yrcmfZuNB-y1RuaVKyPoMYk21f6xvJrsvdlRw3sELanqa3QOx-t8r_Kr8Q0ypYoum5zd9PSSaKkf5J2nqqE-BerstguaOHsq3r7rs_DEgWuyUI2yOadX1aZ1-phba9-tqHq3Rc3I7EyqhMWTBMV8qWCxsAzmCnHSKyHdplCTg30VlGqB5_Qiar1H5TNyj9Lu5l7MQBg7pc-kyyamE0JKRn7GrqmJIQsGuRhint-W7vBe7pX7vb5KHDDY6qLD2Pd7iJGkh5v39u08XdFeLq38YWzNfC2HJ52qD3F67xr66bg0z7h5AiFYC7dDMh8WwwlmoEnnpF7FG1ypXrkMEmQjdApVp1wdQw4YnZ-07iM0xVtJrpKujtBggpwuh8ebG0TEbzdt-AxOd3VVh0Z8dL3p6t3M-6UZTzZa-9aZBui0PK7HyAnWT9cQ2-PZdy7zcY_C5KAdF5ac1m71fSYsLUwwDhfc2bMa68-o81Rn49geaHy4J06Zv4bZbm5mqMlsL4eZZt4Nu86jWH0e7WZ3DCx46b3F5R7EWAnX7aBLVno0bSHphPpopKacCph2J9Jb6rjWO_mB-m62hTFHFD5CXTNX1j7sTkLdTiezE_qbouV3T5IfzpNWwUyhhMb9Vlf8rg5PaGDGrRTazDFrNyLQWUxE-0ZzFGDTzSLTr1earVquF6oXJGtzfLJet9Bii5jz1Igb3XZRV8y61ZqJbVkQcmApahxYf6RfYroW1_iDfC0UcQ0URRDlj_wrxcq3IsVigrG4VqT0O_ler5cLIHxLWFYE_FF8AQEsBbBYLIAoiOBzkS6XYLVUxBVI48VyzUkCqXFRfVbVvX5d6h_vEPK1ALIChI8Kx6Qa3mkWgHcA4AB4Bdv-69XwKx6zgZOEqhjY8BfBCla9I7D67lhq_P9JvX9T7k-8_EkXw8DXhOU0_YlA_zn6fIx99fW_w0lWsHyMPxNac8B4Cfn996vt6aubA8bb2Os6-O3t_gX-JwAA__8p98nn">