mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 12:00:11 -05:00
Here, we capture nf, then the use of the proxy decays to a constant during semantic processing of +nf. Since we saw some decay from proxy to constant, we walk through the lambda body to see which proxies are still used, but we weren't walking into subtrees of DECL_EXPR at all, so we missed the use of &nf in the initializer of y, and removed the capture. But then at instantiation time we try to use nf, don't have a proxy anymore, and ICE. * lambda.c (mark_const_cap_r): Do walk subtrees of DECL_EXPR for non-proxy decls. From-SVN: r268471
19 lines
233 B
C
19 lines
233 B
C
// PR c++/88761
|
|
// { dg-do compile { target c++14 } }
|
|
|
|
template <class T>
|
|
void f(T t) { t(1); }
|
|
|
|
int main()
|
|
{
|
|
const unsigned long nf = 10'000'000;
|
|
|
|
auto loop = [&](auto)
|
|
{
|
|
auto x = +nf;
|
|
auto y = &nf;
|
|
};
|
|
|
|
f(loop);
|
|
}
|