<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/98708>98708</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
ICE when reference-capturing lambda deduces this
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
supsm
</td>
</tr>
</table>
<pre>
Attempting to deduce this on a lambda that has reference captures causes a compiler crash.
Minimal reproducible example:
```c++
int main()
{
int i;
const auto lambda =
[&i](this auto self)
// OK: [i](this auto self)
{
return i;
};
lambda();
}
```
Clang++ 18.1.8 (latest, from github) on Windows 10
`clang++ -std=c++23 file.cpp`
crash logs (windows user name replaced):
```
0. Program arguments: "C:\\Program Files\\LLVM\\bin\\clang++.exe" -cc1 -triple x86_64-pc-windows-msvc19.37.32825 -emit-obj -mrelax-all -mincremental-linker-compatible -dumpdir a- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name clang-ice-deducing-this.cpp -mrelocation-model pic -pic-level 2 -mframe-pointer=none -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic "-fdebug-compilation-dir=C:\\Users\\user\\Downloads" "-fcoverage-compilation-dir=C:\\Users\\user\\Downloads" -resource-dir "C:\\Program Files\\LLVM\\lib\\clang\\18" -internal-isystem "C:\\Program Files\\LLVM\\lib\\clang\\18\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.37.32822\\include" -internal-isystem "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.37.32822\\atlmfc\\include" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\ucrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\shared" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\um" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\winrt" -internal-isystem "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\cppwinrt" -std=c++23 -fdeprecated-macro -ferror-limit 19 -fmessage-length=120 -fno-use-cxa-atexit -fms-extensions -fms-compatibility -fms-compatibility-version=19.37.32825 -fno-implicit-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -o C:\\Users\\user\\AppData\\Local\\Temp\\clang-ice-deducing-this-5d004c.o -x c++ clang-ice-deducing-this.cpp
1. <eof> parser at end of file
2. clang-ice-deducing-this.cpp:1:5: LLVM IR generation of declaration 'main'
3. clang-ice-deducing-this.cpp:1:5: Generating code for declaration 'main'
Exception Code: 0x80000003
#0 0x00007ff60989051c (C:\Program Files\LLVM\bin\clang++.exe+0x1d2051c)
#1 0x00007ff6094ef140 (C:\Program Files\LLVM\bin\clang++.exe+0x197f140)
#2 0x00007ff6094ee91c (C:\Program Files\LLVM\bin\clang++.exe+0x197e91c)
#3 0x00007ff6094ee397 (C:\Program Files\LLVM\bin\clang++.exe+0x197e397)
#4 0x00007ff6094ed991 (C:\Program Files\LLVM\bin\clang++.exe+0x197d991)
#5 0x00007ff6094ea205 (C:\Program Files\LLVM\bin\clang++.exe+0x197a205)
#6 0x00007ff6094e9653 (C:\Program Files\LLVM\bin\clang++.exe+0x1979653)
#7 0x00007ff609937a9e (C:\Program Files\LLVM\bin\clang++.exe+0x1dc7a9e)
#8 0x00007ff609935067 (C:\Program Files\LLVM\bin\clang++.exe+0x1dc5067)
#9 0x00007ff60a05346c (C:\Program Files\LLVM\bin\clang++.exe+0x24e346c)
#10 0x00007ff60a04361a (C:\Program Files\LLVM\bin\clang++.exe+0x24d361a)
#11 0x00007ff609fef15b (C:\Program Files\LLVM\bin\clang++.exe+0x247f15b)
#12 0x00007ff6081217e1 (C:\Program Files\LLVM\bin\clang++.exe+0x5b17e1)
#13 0x00007ff608121282 (C:\Program Files\LLVM\bin\clang++.exe+0x5b1282)
#14 0x00007ff60811dfb4 (C:\Program Files\LLVM\bin\clang++.exe+0x5adfb4)
#15 0x00007ff60811bb30 (C:\Program Files\LLVM\bin\clang++.exe+0x5abb30)
#16 0x00007ff60811a4fe (C:\Program Files\LLVM\bin\clang++.exe+0x5aa4fe)
#17 0x00007ff607f5a47c (C:\Program Files\LLVM\bin\clang++.exe+0x3ea47c)
#18 0x00007ff607f560c3 (C:\Program Files\LLVM\bin\clang++.exe+0x3e60c3)
#19 0x00007ff60a074b70 (C:\Program Files\LLVM\bin\clang++.exe+0x2504b70)
#20 0x00007ffaeac27344 (C:\Windows\System32\KERNEL32.DLL+0x17344)
#21 0x00007ffaeba1cc91 (C:\Windows\SYSTEM32\ntdll.dll+0x4cc91)
clang++: error: clang frontend command failed due to signal (use -v to see invocation)
clang version 18.1.8
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin
```
preprocessed source:
```c++
# 1 "clang-ice-deducing-this.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 456 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "clang-ice-deducing-this.cpp" 2
int main()
{
int i;
const auto lambda =
[&i](this auto self)
{
return i;
};
lambda();
}
```
run script (windows user name replaced):
```
# Crash reproducer for clang version 18.1.8
# Driver args: "--driver-mode=g++" "-std=c++23" "clang-ice-deducing-this.cpp"
# Original command: "C:\\Program Files\\LLVM\\bin\\clang++.exe" "-cc1" "-triple" "x86_64-pc-windows-msvc19.37.32825" "-emit-obj" "-mrelax-all" "-mincremental-linker-compatible" "-dumpdir" "a-" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "clang-ice-deducing-this.cpp" "-mrelocation-model" "pic" "-pic-level" "2" "-mframe-pointer=none" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-fdebug-compilation-dir=C:\\Users\\user\\Downloads" "-fcoverage-compilation-dir=C:\\Users\\user\\Downloads" "-resource-dir" "C:\\Program Files\\LLVM\\lib\\clang\\18" "-internal-isystem" "C:\\Program Files\\LLVM\\lib\\clang\\18\\include" "-internal-isystem" "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.37.32822\\include" "-internal-isystem" "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.37.32822\\atlmfc\\include" "-internal-isystem" "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\ucrt" "-internal-isystem" "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\shared" "-internal-isystem" "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\um" "-internal-isystem" "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\winrt" "-internal-isystem" "C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.19041.0\\cppwinrt" "-std=c++23" "-fdeprecated-macro" "-ferror-limit" "19" "-fmessage-length=120" "-fno-use-cxa-atexit" "-fms-extensions" "-fms-compatibility" "-fms-compatibility-version=19.37.32825" "-fno-implicit-modules" "-fskip-odr-check-in-gmf" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-faddrsig" "-o" "C:\\Users\\user\\AppData\\Local\\Temp\\clang-ice-deducing-this-e5013d.o" "-x" "c++" "clang-ice-deducing-this.cpp"
"C:\\Program Files\\LLVM\\bin\\clang++.exe" "-cc1" "-triple" "x86_64-pc-windows-msvc19.37.32825" "-emit-obj" "-mrelax-all" "-mincremental-linker-compatible" "-dumpdir" "a-" "-disable-free" "-clear-ast-before-backend" "-disable-llvm-verifier" "-discard-value-names" "-main-file-name" "clang-ice-deducing-this.cpp" "-mrelocation-model" "pic" "-pic-level" "2" "-mframe-pointer=none" "-fmath-errno" "-ffp-contract=on" "-fno-rounding-math" "-mconstructor-aliases" "-funwind-tables=2" "-target-cpu" "x86-64" "-tune-cpu" "generic" "-fdebug-compilation-dir=C:\\Users\\user\\Downloads" "-fcoverage-compilation-dir=C:\\Users\\user\\Downloads" "-std=c++23" "-fdeprecated-macro" "-ferror-limit" "19" "-fmessage-length=120" "-fno-use-cxa-atexit" "-fms-extensions" "-fms-compatibility" "-fms-compatibility-version=19.37.32825" "-fno-implicit-modules" "-fskip-odr-check-in-gmf" "-fcxx-exceptions" "-fexceptions" "-fcolor-diagnostics" "-faddrsig" "-x" "c++" "clang-ice-deducing-this-311339.cpp"
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWl2PnDjW_jX0jeUS2FDARV0kVZ1X0STvrCazs9qrlTGHKk-MjWzTXfn3K_NVQH8lqWh6VkrUSsHx4XmOv44Pj2DWiqMC2AXJ2yA53LDWnbTZ2bax9U2hyy-7N85B3TihjshpVELZckDuJCzSCjEkWV2UDLkTc-jELDJQgQHFAXHWuNaARZy1FixiiOu6ERIM4obZ0yYID0H4pv__o1CiZhIZaIwuWy4KCQjOrG4kBHRwCrZh_8cD8tb_dVahHKqZUAHJApIPnunbET337SKgFwPXyjrEWqfH6AN6mFr9QJCtCJJDQLKun52nBVld4MM8IO8C8g79-ktA36AgefvyA7OQgjA34FqjloEF6WF-2wc3dGuyp4fVYMyHcS-ZOvaDg6JsE20yFJBMMgfWBWSPKqNrdBTu1BYByf0M_kuoUt9bFIUTLJ-BYOvKgB6GAScUVULChjfNiribUST10XrC-wG0tWCQYjX4eZWMQ9l1ZT2d_W24Qd2_fxh9NKxGzBzbGpSz3QgTsvcPJvsg2Y8e74QE25s-fPjjY39VCNVfzLqxgTMEhCDMeYSwM6KRgM7Z9j_bGDccD-Hi2t7xKN_QdENJRhKEoRYO6-JPhGsDkp0xkxLhWihuwIfGJJZCfQaD_dJmrlu1uGzrphQGMYxwKSwrJODKACDMJTCDmXW4gEobwAXjn0GVFz8p72p8B0ZUAkxn5syU-I7JFrAfSYuwX-zYz0NnQF0_seCAu80p1BH7VegnqY9bc-aEVrjWJUjUCI5wIziWcAcSEYTryrAacKOFcmACelBaAcJVzdwJgzFKI1xVDeZaOcO4C-hBK4QrpbHRrSo9o_dFuO62lmm50wYzKZjf97hqlR9h7HwPbUAPBGHHzBEc5k3r5wFvY4Rdq6AzHEGBEdzPOa5KKNoj7jNH341S-Bgvq-GfFsywCvx6668O-l5JzUrrp70D4voODDvClVjYgNWt8aMtzDcsSymK-bLsLqOsQ-yGXTGJhf1iHdTXo3a_QnHZlvB9FB8FN9rqyqE_hG2ZRJ9cWwrdN5KQkP5qr-u6VcJ96W__2Pe_v2stR6BPozGKx51F_kcCZE7WFb8qWJ8Nz9nWp72ucUy3vwg38Edh__t-IBiMm3AT5WEcbYbmlhv3auT2xIzP3a_V9_rVqO-FesVx501zCWB9Evvc2BjgzEGJa8aNT9NgjDZYilo4FOU-iYO1PutJUEd3CughImGfu1sLmJ8ZZg7OwnlXi-HsQFmhle3vx2NNSOG-PGLyR5V397jzg9Pji7qRggvnz51WdgeB_SwarEuD-Qn4ZywUPtYVwhU_nzGcOTRuoF7ccC21waVgR6WtE9zbWFkaK44Ia_RC9n7TNAfm2JA5NWdySAFQN7Pc-fAAxUkZhjHfaITPaBj25w7bvoqJhiomoHvQVUBvUcOML4OYQ_6k11VXQvXOZHB-DpW-iQL6JvFFkM_76P1v_QHZHWAergQu2XAbkLQvhdOegH4bwf8NwOqIuC4BVdo8C387ThPa69LX6Sg8Z2H3j_YeKCA0ROHZm9Kq2oZ5lodJ5A_3bJi4dXIfTre-jntQxL0Nz1FJPMRUXHuOaMERQxXF4VUceeohFhxkxQH5lf3IUw-x4KBrDpqn13LQPF1wxCuOMs-jKzk8xIIjWXEwEiZXcniIBcd2xZFvE3olh4dYcKQLjpymLIfr1i73EAuObMWRhNvr5rzkHmLBkc85WJjQeHvV2iUxeIjLCy6hUbjkiOk2YtdxlB5iwbHc5xVUUVJcx5F6iAXHYp9nEYlSuGp_JIVHWFDQNQXJyJUUJCMLinhJEZVVEV9FwTzCgiJZURQFvSrpJswjLCi2KwoWV1ftv4R5hAXFYounVcLi9KqtQcEjLCiyFcU25FdlKgoeYUGx2uBpXKRXzQVJQg8x5yCzDc6AcZLSeL6khjI3SPafugqZ-teoX25_-__bD5RsDh8-9NnJP7WAjeawBYs4X5xHM9h_f_r99mMHq1wp5aaUssOM_SMT5qw7viTpSmJ_0dlRZbRyvhLjuq6ZKlHFhIQSlS0gp5EVR8Wkp28tIHzX2QCQUHeDjrLkQUMFPMhtfcvvnbrhOR8XmQavkwFWok6W8b6NtuLcN71X1jEpoTyILvSXZ_FpTbDpNFUO1kKJeu3iBUU1IBT5GSDPlY2ErJwDui9aIR0WKqC3_pUletGDXjziZPuiz4gyTp0UCr6aax3v850b3Z9Vl9FSW0bPKMvo63Tl3nXCRw9kYjQXidF3SMSmVchyIxr33UqtH8J9J_iOcj2Y7l3h6R3hHzkYcedfhMxxlHQxLjtbJ00G9DDu2kGzW73xDuavXZS_GnEUfi8Pq8Vz_iAd2QfHeTRe9oLycPeirDw-NYrL4_1FYp4szwrNo9cgNw-3DE_2mfQ8Bf2EAL1-ZiFDzxrXYvQU6UKS_qqJmvq8kKeHhkbw0WWSqgcDmZ59TLae5N6LeD2Z1hL21LAWsieGR-Ts6aEHova0GiZp-7Ii8DaemgeZe7gfxO4J9u-md3usueQ92K5WvT3uWlL7IdhrtfZ7if5iBfzvHOYTOvi3h_zD1fBXDOGiib_mONSvHMAkT79iDHOV_Omy4aFcPjXMRPPBFuWXg-QRAX1-cixl9MtjczF9bl3o5082PC6sz3nX8vrU9qjIfjkWFlL7ZQgemh7I7lPLIL6P9_rBPP9gIR6SMKLlZpqw81hgLMrFr6kLf9Z_P-u_n_Xft2L9TKh_bUL9pvyGaRRRmq_S3PjCflPuaJnTnN3ALkpJmMWE5OHNacfDIitCSFJIYpKHlFRJtSV5XBBC86yIb8SOhCQO04iGNI7jfFPlWchimlUZD0NC8iAOoWZCbnyy2GhzvBHWtrDLszTMbiQrQNrus0JCFNyjrtFHmBxuzK5LMEV7tEEcSmGdvaA44STs3u9v0f0J1OWDQtx_UCjUcRRX-o8Rbfc14k1r5O7kXGP94u4-zuu_c9twXQfknYcffnBj9J_AXUDedUHZgLzrg77bkf8GAAD__023_II">