<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/91006>91006</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [clang] ice taking lambda::operator() address
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jvcppdev
      </td>
    </tr>
</table>

<pre>
    The following code crashes all recent versions clang (tested up to 18.1.0), but compiles smoothly both with recent versions of both g++ and msvc:

```c++
#include <tuple>
#include <functional>
#include <utility>

template<typename T> T fake_get();

using type_list = std::tuple<int, char&, const float*, std::size_t&&, bool>;

template<typename T> struct analyzer_base {};
template<typename T> using analyzer = analyzer_base<decltype(&T::operator())>;

int main(int, char**)
{
    std::invoke([]<std::size_t... i>(std::index_sequence<i...>)
    {
 (std::invoke([]<std::size_t... j>(auto k, std::index_sequence<j...>)
 {
            using return_type = std::tuple_element_t<k, type_list>;
            using arguments_type = std::tuple<std::tuple_element_t<j, type_list>...>;

            using lambda_type = decltype([](std::tuple_element_t<j, type_list>...) -> return_type { return fake_get<return_type>(); });

 analyzer<lambda_type>{};
       }, std::integral_constant<std::size_t, i>{}, std::make_index_sequence<i>{}), ...);
    }, std::make_index_sequence<std::tuple_size_v<type_list> - 1>{});
}
```

```
>clang++ test.cpp -std=c++20
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-18/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-obj -mrelax-all -dumpdir a- -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name test.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 -debugger-tuning=gdb -fdebug-compilation-dir=/home/jvilar -fcoverage-compilation-dir=/home/jvilar -resource-dir /usr/lib/llvm-18/lib/clang/18 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/x86_64-linux-gnu/c++/14 -internal-isystem /usr/bin/../lib/gcc/x86_64-linux-gnu/14/../../../../include/c++/14/backward -internal-isystem /usr/lib/llvm-18/lib/clang/18/include -internal-isystem /usr/local/include -internal-isystem /usr/bin/../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++20 -fdeprecated-macro -ferror-limit 19 -fgnuc-version=4.2.1 -fno-implicit-modules -fskip-odr-check-in-gmf -fcxx-exceptions -fexceptions -fcolor-diagnostics -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/test-191165.o -x c++ test.cpp
1.      <eof> parser at end of file
2.      Per-file LLVM IR generation
3.      test.cpp:16:22: Generating code for declaration 'main(int, char **)::(anonymous class)::operator()(std::index_sequence<0UL, 1UL, 2UL, 3UL>)::(anonymous class)::operator()'
#0 0x00007f8e6f7e967f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:723:13
#1 0x00007f8e6f7e77b9 llvm::sys::RunSignalHandlers() build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Signals.cpp:106:18
#2 0x00007f8e6f7e9dc0 SignalHandler build-llvm/tools/clang/stage2-bins/llvm/lib/Support/Unix/Signals.inc:413:1
#3 0x00007f8e6e5f3320 (/lib/x86_64-linux-gnu/libc.so.6+0x45320)
#4 0x00007f8e77fb9351 use_empty build-llvm/tools/clang/stage2-bins/llvm/include/llvm/IR/Value.h:346:20
#5 0x00007f8e77fb9351 clang::CodeGen::CodeGenFunction::EmitReturnBlock() build-llvm/tools/clang/stage2-bins/clang/lib/CodeGen/CodeGenFunction.cpp:286:51
#6 0x00007fff734b4c50
clang++: error: unable to execute command: Segmentation fault
clang++: error: clang frontend command failed due to signal (use -v to see invocation)
Ubuntu clang version 18.1.3 (1)
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: /tmp/test-7765b2.cpp
clang++: note: diagnostic msg: /tmp/test-7765b2.sh
clang++: note: diagnostic msg:

********************
```

A live demo is in [Compiler Explorer](https://godbolt.org/z/fb37zGanv).

A zip with original c++ file, preprocessed file and run script is in [test.zip](https://github.com/llvm/llvm-project/files/15204527/test.zip)
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWF9v2zgS_zTKy4CGRNmW_ZAHx47bAtlrkaa7jwZFjWQmFKkjKdfppz-Qkv873exu7y4IbIsazvxmOH_JrBWVQryNRnfRaHHDWrfW5vZ5w5umwM1NrovX26c1Qqml1N-FqoDrAoEbZtdogUkJBjkqBxs0VmhlgUumKojoxKF1WEDbgNOQTAbJII7oNKJzyFsHXNeNkGjB1lq7tXyFXLs1fBdufcFSl93LKqJ3Eb0Dpgqo7YZH6SyKF1G8-xzH3T_v6PpVmgrFZVsgROnctY3EKL2_9q5sFXdCKybfIGidkMK9Ht6GT4d1I5lDz_21QcVqhKcovYcnKNkLrip0EZ141dO7432t9fb0W1ZSWAdRugDrCq9UOutxzoVy3mJ8zUxEx-GnVtZBKTVzEZ35lf0mK37gygW6QJprHVQ5lfsmXutMyx0wxeTrDzSrnFmEKLuLssWexZubO212e4MyJ4yidF4gl35TsMb4qcOsGzTMadObyFvpHLBQDmomVEQnJ-aYhf9pT5r1ewDgYBGhNvolCAwOHqXzM2MNBgMQXiSdHG0qcLuy-O8WFQ-HMBgMAs30IOIg73TrO-Q9d_JY6zS8nBzgheTnc8knau7-OtsbdK1RK2_hK760Qok1KrdyUToPUveed2zxS7bMVK3faN_ifKzkpajnc1G9RqdHfClWsjov2EHmsfN0tj0y-zvF0ikQ76snlsru-udDtKbzI4rusLrwBR8KF4G8d_QonR_B9htPg6dXMDA5OXWHlWFyFUKbKXfpNp5eHBge76496kuXPSIOObfT_wTK-zidGTng2fThvzMuEEhOBO4NlC3OcvPVhN0_pvehePRZ3tePAW8aIAHCos_qtKf-8nA_-3oPts1r4YBB3voQaLRxvt6snWusx02XEV1Wwq3bfMB1HdGllJvdF2mMfkbuIroU1rZoI7oM1WWX9N26L3aQM_7iDOPoTdYYbIzmaC0WYHVrumW_k1mruWC-8plWgeVGNG7QQf7qGH-Boq2bfeWKB51PfDG6Mqw-RFuU-syybK3xWEW-Q5xMIrrMfTJcdpWWcJ4AcUY0EmE7Ga_GQ9JwIoVqt6RSLRCshSM6fwZSG5RsS3zZJh5GIQwwAqQQluUSSWkQgXCJzBBmHcmx1AaJ1x1VcaALSDZoRCnQhGXOTEE2TLZIfE2wQHzGJqWQ3cLRaXoQmjNfaUmtC5TQCA6kEZxI3KAE2j0ISxqBQOrSsBpJo32cmChdBPhlzdyaoDFKAynLhnCt_Pm4KF1oBaRUmhjdqkKoinhaIHWIL1_jtCFMCmY9zrJV34UqiPOa2ShdUCCOmQod4U3rLUrGQyCuVRgWKlRoPOAC87aq0PhXQlVRuqiKHEgZ1knX33RaFsLDjuhyrWuM6PJ5IyQzQEquN2hYhe-iNth5mid42zW65z6OlskESDCbYpII-2od1oe9nRv5xNBvqziP6LJ3or0HeT7DHeHZRx8oXmTfdHni_5nQK7v-LziOhXrejL98Z6b4mfw_O7gD_59y0ZzJ95H-AoWv0F4Kxq3_wS8BvH1sP9_910VclIwQlo1B7hMzqRk3PmugMdoQKXwBSaZAykq1nPRjR5QuhgM6SLpUIupGCi6cz1itDHnDvoiG6MIQvkb-QoQiVV36oN5uCW45Ni4ML6Q8eeBaakMKwSqlrRPcr7GiMFZUQBar1Yf5fPVx9vv9avHH7HFJV_Plp9Xs629RukiAaK-pqxv_idaRZJok49FAA9kCPyubXX1J-voSpXPUpS_VDTMWDTAHPqXrEnyO7ojprhihCZkbHh5-_w0-PXY5L2SnjjDtCfey0lkyjtIZpb5sfeipd9NiqU1o31jHAiKaXbbzcOjnQ7fhG2Sl1Wut2zBTWrt_dT4y_KRzj789eAFJ90W7r_TbQ99T_1VJ2X4qjCHexnEcZ-UEx2WG03FWQugsuq7t1XY_vhihXKj7T13zMDkQGfZ9pa0zyOp-YAv2mELeClmQvk9xWkt7lBmsYxVSkgtlj5qZENBf28b3PxFdflNi6xdEpZi0A6H8rJzR1B9UulciOVMiy_LpNSUeW9Vx-shUIdHYzh6_AOcOYO9DsXeiZLIHSM-tXPAYTqD8t2w1TIKt9kjSYyQ4KtOUxhDM0PO7khqlyPnA6sE4onfxdjhKaXwYV2k6PGKZZWU-TUcJtBZXWDfu9W8odsiv_cKnx4guf_dN2WAdpbN0GGI03iMYXUPQiQjnPtcFfkB18rDsL0m6xftauMcwK91JzV_-ul_sVjsj7gTuf-2k9Q5CJ16D0eFYxnsNyjJLh_mQj3r1jiYJn5NCqvc_WuX7PD8i4BZ56xC4rmumfAaBr1j55rtLUyVrpfs5s64DL41WzifTnhOUTEgsoGiDHBscyztLaxHIJqwhglCbvg3ee8W3vFWu7dn2dai7Okv9_mRP-BQaVA_hSsffk6wNsgJCh-0JG23Ftnv1yY-ZUmKxEOZkzvAtwjWFlXbovw9lC2pbHa7f6D_4P5oH-5Fu9vQ0m3-Ep4_3sPz88PD5j0__-gDLTw_3X-Hpc1i--_YBHu-_fH582mP4cm0km_hU_vZYticwCGEkwQKY27N8rxHOinKWjUc5PZTgf8bGrv_Wifyqc7k2ts9Aig1CgbUGYUEoiEZ38-4-18D9tpHaoOmuaM7mcF3kWrqBNj7mf0R0WeZp9uMDU5uITgenQn6IprsO1kZUwofQrsUJHcv5GB4aFn_Uh_M9oAuNyg_RXAX155cDnrfPVsmIxsMRzfozChzp9Ka4TYtpOmU3eJtkyTAbZ3SY3KxvR2k2LZIpG2ZJEseTCRbxeDLK0nRcDCdZNr0RtzSmw3gUpzROhnEyyDGeTKaTybiM-bgY02gYY82EHHhA3mw34Z7idprE8fhGshylDZf3lPYOQqPR4sbcBgXytrLRMJbCOnvg4IST4ca_2zFagOAIjr0crt2udT_gu1S09qY18vbvX68E5P8JAAD__9V7f40">