https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106124

--- Comment #5 from rguenther at suse dot de <rguenther at suse dot de> ---
On Tue, 28 Mar 2023, jakub at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106124
> 
> --- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
> (In reply to Richard Biener from comment #3)
> > I suppose that's the OMP reduction function and that's always(?) inlined?
> 
> The reduction "function" is something artificial which holds some expressions
> for the
> OpenMP reductions; we just need to attach those statements to some decl for
> name lookup purposes.
> The problem is what to do with lambdas defined inside of those expressions, or
> e.g. nested functions for the C case:
> int q;
> 
> #pragma omp declare reduction (x : int : omp_out += omp_in + ({ int a = 1; 
> void
> foo () { a++; } foo (); a; }))
> 
> void bar (int *, int *);
> 
> void
> foo ()
> {
>   int r = 0, s = 0;
>   #pragma omp parallel reduction (x : r, s)
>   bar (&r, &s);
> }
> 
> ICEs too.  Lambdas are there certainly valid, we try to pretend the artificial
> functions don't really exist for the debug info purposes, but apparently not
> sufficiently.

Set DECL_IGNORED?

Reply via email to