From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id A59093858C20; Mon, 20 Feb 2023 09:45:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A59093858C20 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1676886323; bh=mE4marjRCcfc+kkFJBLg8EZEm3QpfwD3xB+OIsN3QF0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=fgC0OGTL2cEdvB+wMx5r66dq0fnNucSdWM1qo9pfWwMidSmTN1Md3u27U3QlDJara aES4VSK7/bws0m7c0kC+6iFrTUTSBk0rtK45WP9I0hlVBPEwJ0knRxDShKfju3Dv3L 0L/yIlwFo7y8TsG3xRJhF6UZok0bDFuJPWvl6F98= From: "burnus at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug c++/108422] [13 Regression] ICE: base pointer cycle detected since r13-2661-gb57abd072dd319a7 Date: Mon, 20 Feb 2023 09:45:22 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c++ X-Bugzilla-Version: 13.0 X-Bugzilla-Keywords: ice-on-invalid-code, ice-on-valid-code, openmp X-Bugzilla-Severity: normal X-Bugzilla-Who: burnus at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: jules at gcc dot gnu.org X-Bugzilla-Target-Milestone: 13.0 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=3D108422 --- Comment #3 from Tobias Burnus --- FOR_EACH_VEC_ELT (*groups, i, grp) { if (grp->mark !=3D PERMANENT) if (!omp_tsort_mapping_groups_1 (&cursor, groups, grpmap, grp)) return NULL; } first processes: map(to:*(const struct ._anon_0 *) __closure) map(firstprivate:__closure [pointer assign, bias: 0]) map(tofrom:*__closure->__a [len: 4]) map(always_pointer:__closure->__a [pointer assign, bias: 0]) map(to:*__clos= ure) map(to:*(const struct ._anon_0 *) __closure) which then has: *innerp =3D=3D grp in omp_tsort_mapping_groups_1. The next VEC has: (gdb) p debug(*grp.grp_start) map(tofrom:*__closure->__a [len: 4]) map(always_pointer:__closure->__a [poi= nter assign, bias: 0]) map(to:*__closure) map(to:*(const struct ._anon_0 *) __closure) But the inner one is again the previous one: (gdb) p debug(**innerp.grp_start) map(to:*(const struct ._anon_0 *) __closure) map(firstprivate:__closure [pointer assign, bias: 0]) map(tofrom:*__closure->__a [len: 4]) map(always_pointer:__closure->__a [pointer assign, bias: 0]) map(to:*__clos= ure) map(to:*(const struct ._anon_0 *) __closure) where: (gdb) p (*innerp)->mark $78 =3D PERMANENT Untested patch: --- a/gcc/gimplify.cc +++ b/gcc/gimplify.cc @@ -9643 +9643 @@ omp_tsort_mapping_groups_1 (omp_mapping_group ***outlist, - if (innerp && *innerp !=3D grp) + if (innerp && *innerp !=3D grp && (*innerp)->mark !=3D PERMANENT)=