From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 1C773385840F; Fri, 24 Feb 2023 14:46:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1C773385840F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1677249999; bh=+reQHi+Z972rfNiEdQMdbmfRmNHwN71sLWtGgWFgCzE=; h=From:To:Subject:Date:In-Reply-To:References:From; b=FwWMwL+biwg0jxQuUA94AVJuqu+3YUAyaFLAhsejwsLWX9kBuKMl/+yH7pZ8Fcktt 9iyjfgIq8Wi1Zua/RVP9MZe9pog8muEh0Z8fdUPyShltJES7lUvmMplVpvGOWmwbh1 KHcmfd+JO52Ad7wAZtvIttYeC/ID4WKl4TAFFE4Y= From: "burnus at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug middle-end/108545] [13 Regression] ICE in install_var_field, at omp-low.cc:799 since r13-2665-g23baa717c991d77f Date: Fri, 24 Feb 2023 14:46:38 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: middle-end X-Bugzilla-Version: 13.0 X-Bugzilla-Keywords: 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: P1 X-Bugzilla-Assigned-To: unassigned 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=3D108545 --- Comment #3 from Tobias Burnus --- Fortran: Same issue (ICE) also with: !$omp target enter data map(to: x) Crucial is the VOLATILE attribute. * * * The following C code already gives an ICE with GCC 12, it works with GCC 11. (Either of the two lines fail. I think that's invalid OpenMP code, but I do not have a real overview about 'map' - and I fear no one has.) volatile struct t { struct t2 { int *a; int c; } u; int b; } my_struct; volatile struct t3 { int *a; int c; } my_struct3; void f() { #pragma omp target enter data map(to:my_struct.u) map(to:my_struct.u.a) #pragma omp target enter data map(to:my_struct3) map(to:my_struct3.a) }=