From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 17CB33858C53; Tue, 28 Mar 2023 14:58:47 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 17CB33858C53 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1680015527; bh=8pIWsRZAqe3e1cG4TQv4LYrheusGeG8ISbERbsNQsAU=; h=From:To:Subject:Date:In-Reply-To:References:From; b=Zsph9TFX6UHbwlb1DEFjvUnvLPg1lujLuL7UifHjzzLzZ1z6aGXkiUU8UHO5O26gX 4/MDPl96vvyUxszZDgVvZSs+oKYsFb9GZNbAR1WAjsIahw81Zem6LTvmTjz1XW3gaH 2tzkxrG4cloWDmTNQWgPXTPoVuUQWewjwhjY56vY= From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug ipa/106124] [11/12/13 Regression] ICE in dwarf2out_abstract_function, at dwarf2out.cc:23254 Date: Tue, 28 Mar 2023 14:58:46 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: ipa X-Bugzilla-Version: 13.0 X-Bugzilla-Keywords: ice-on-valid-code, openmp X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: ASSIGNED X-Bugzilla-Resolution: X-Bugzilla-Priority: P2 X-Bugzilla-Assigned-To: rguenth at gcc dot gnu.org X-Bugzilla-Target-Milestone: 11.4 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D106124 --- Comment #4 from Jakub Jelinek --- (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 expressio= ns 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 +=3D omp_in + ({ int a =3D= 1; void foo () { a++; } foo (); a; })) void bar (int *, int *); void foo () { int r =3D 0, s =3D 0; #pragma omp parallel reduction (x : r, s) bar (&r, &s); } ICEs too. Lambdas are there certainly valid, we try to pretend the artific= ial functions don't really exist for the debug info purposes, but apparently not sufficiently.=