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

    <tr>
        <th>Summary</th>
        <td>
            Clanf SISEGV in addAssociatedClassesAndNamespaces since clang 9.0
        </td>
    </tr>

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

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

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

<pre>
    I have not been able to reduce it more. The original version without reducing gave the error addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0, repeatedly until stack exhaustion, the reduced one does not seem to give any feedback, so both versions will be posted.

## Stack dump:

```
#0 0x00005c1e0215318f llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/local/bin/clang-21+0x3c4a18f)
  #1 0x00005c1e02150bd4 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
  #2 0x0000723f94a83420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
  #3 0x00005c1e04ab0330 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
  #4 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
  #5 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
  #6 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
  #7 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
  #8 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
  #9 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #10 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #11 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #12 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #13 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #14 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #15 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #16 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #17 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #18 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #19 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #20 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #21 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #22 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #23 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #24 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #25 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #26 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #27 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #28 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #29 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #30 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #31 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #32 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #33 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #34 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #35 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #36 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #37 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #38 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #39 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
 #40 0x00005c1e04ab2eea addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #41 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
 #42 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
...
#254 0x00005c1e04ab2f38 addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::TemplateArgument const&) SemaLookup.cpp:0:0
#255 0x00005c1e04ab08bf addAssociatedClassesAndNamespaces((anonymous namespace)::AssociatedLookup&, clang::QualType) SemaLookup.cpp:0:0
```

## Program slightly reduced:

```
#include <tuple>
#include <iostream>

template <typename F>
auto apply(F&& f) ->
 decltype(apply(std::forward<F>(f)))
{
}
template <typename F, typename... Args>
auto apply(F&& f, Args&&... args) ->
 decltype(apply(std::forward<F>(f),
 std::forward_as_tuple(std::forward<Args>(args)...)))
{
    return apply(
 std::forward<F>(f)
    );
}
int main() {
    apply(
        [](int x) {
            return x;
        },
        10
 );

}
```

Original:

```
#include <tuple>
#include <iostream>
template <typename F, typename S, size_t... Is>
auto apply(F&& f, S&& t, std::index_sequence<Is...> is) ->
 decltype(std::apply(std::forward<F>(f), std::forward<S>(t), is...))
{
 return std::apply(std::forward<F>(f), std::forward<S>(t), is...);
}
template <typename F, typename... Args>
auto apply(F&& f, Args&&... args) ->
    decltype(apply(std::forward<F>(f),
 std::forward_as_tuple(std::forward<Args>(args)...),
 std::make_index_sequence<sizeof...(Args)>{}))
{
    return apply(
 std::forward<F>(f),
 std::forward_as_tuple(std::forward<Args>(args)...),
 std::make_index_sequence<sizeof...(Args)>{}
    );
}
int main() {
 std::vector<int> vec{1, 2, 3, 4, 5, 6, 7};
    apply(
        [&vec](int x) {
            vec.push_back(x * 2);
        },
        10
 );
}
```

To quickly reproduce:
https://godbolt.org/z/vx3T89eax
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzUWlFz4r4R_zTiZSceWbLBPPBAyNFmptP-O2T6ysj2AmpkySfJBO7Td2Sb5GJyTW96vWKGOHi0u_rt6ietvZJwTu414oKk9yR9mIjGH4xdVMJK9Bgzxie5Kc-LRziII4I2HnJEDSJXCN6AxbIpEKSHyliM4OmAYKzcSy0UHNE6aTS8SH8wje-Epd7DPtjyBwS01lgQZbl0zhRSeCxXSjiHbqnLv4oKXS0KdIRlhGVCG32uTONAX1oImxO-JHz5pv8XY56bmrApYSsolND7TuLvjVBP5zqowAYr0clFRV0TvqTtH1uBxRqDFXWGRnupwHlRPAOeDqJxXhodhALyzvESjEYoDbo2NA6xClHZyyOC0GfYIZa5KJ6DljOQG3-4RMXBi1QKcoTaOI9lROgyfBknjMOm7bZsqoCub5nS_ttKUaAnSilNixgpi1MeZztQ6lh17rqz6378YaX2rbkn20YsexOy4mVrnLcoqj5gUvsQoDbg68ZZwtbKFEIRts6lJmzdRvSOxYTd0xMvEhFnuzAKdAlAGI8HqGheJrCRey3Un4UuFVrCsraTFbhAk53ZesKW4f5oZNn-nPca7t3o9D2wvocZ47t5IjKeMArbrUXnjcWt9T14JXPC1qdsup0md0rq5nS3103XUPuDRVFGzkS0dSROEka_c4N_70Yicso5vRma9hiTAUaGKH4PxiesaiU8Lu2-qVB7KIx2vpX7DHQ6BL3j2c2Dng7ZkOW7W2PDbIxsyMbIhvmNsyGswnRsbAig47GxIYBmI2DDMJuNgg1X6W0MbBimt1tkwzCbjYINV-ltDGwYprdbZMMwm42BDewqvY2ADWyY3m6QDWyYzUbBhqv0NgY2DNPbLbLh6mVtDGy4Sm9jYMMwvd0iG65e1sbAhqv0NgI28GF6u0E28KuXtRGwgV-ltzGw4aoWeYNsGF0tMoAeXS0ygL71WmTAOLpaZAA9ulpkAD2CWmQyxlpkMsZaZHLjtcgoirqtS5aOrbjXgr7x4t67_eHXjeQ_rNlbUYFTcn_w6nzZuP7RtrLUhWpKBMJXvqkVEv7lqkFe9oy7Nrr0fVBbrXONwUdYd82i8QZEXaszYdm69W0Ku-DJXScAJRbKt95lFznny87znbEvwpaEr1pzrNts7r50SWb37fXhxxjYCi53URTB0u7dv8e16mTa-6Ah2rv_Cu0q6A2FtsJtuwh_aOAClGU9gDB7rlwHALDoG6tfXfmorwGgTq_l31v8pPZQCalbvs7hzf73hvtPd1ik28mH03vxy6eHder6eNWcPfTx6D9xv3pdsFzgDNj8t_5Mya-j7ed8gU13SuEbbn1gwuOnzNn0N93xhssgSF3iaevwa4O6QMJXjy4MJv8C8kfMetX9jyn20ZhvOgnfS0j3xqFXAvXD9L_tkP_-aQrwf5-p741V4hm3V1QI7DK7ViPrHJoHW7P7dqL8grl-Yy79xNLz2s0RC29smMDah1lzxILM7uPAARYuPFyScEnDpU2es2CZf7KEsWkw9dlCdsQiqht32HYHubITELYMPc9_cmn7aF17MvC1kcVzm5hra0Ju7ta4g_d1e4SLrQlb702ZG-UjY_eErb8Rtj6e-FM2R3GalAtezvlcTHARz9KYT-fpdDY5LJIpK1g6YwVNcb6jM8F3BRbJtNxlvCxTnMgFoyylMxrHMWfJNMp303mWzGeYJgmNRUESipWQKlLqWIW-J9K5BhdxMk1pNlEiR-Xao4OMdY8rjJH0YWIXQeEub_aOJFRJ592bCS-9wsVKCb2DzePmy5_-AVJ__hwFTuoCu6cimEd00li1GARJ-kOTR4WpCFu3p9y6f3e1Nf_EwhO2bvE7wta9C8cF-1cAAAD__4hc1_M">