From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 851EA3858D28; Wed, 18 Jan 2023 04:16:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 851EA3858D28 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1674015375; bh=AiOYR6DMNzydK95mY6cfdZtSwHp7Ze1e2arEgYn65Xw=; h=From:To:Subject:Date:In-Reply-To:References:From; b=lhJPxHJ2jn3NRoTdiAjjDSydrRLkgt7CaggF8xNotl+0vhdYbrqOV67/V//64sZVn A5EXMPE5OJeyR5ZJhcie3VaSpb+J6hMY164/Hm1WkejPSZrEhRLf6dBKJLpPavWWrM UlKR2G0zwO7HAZf6pHSPp+PnUvUe4QpvzTa2WJ8o= From: "jvdelisle at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/102595] ICE in var_element, at fortran/decl.c:298 since r10-5607-gde89b5748d68b76b Date: Wed, 18 Jan 2023 04:16:14 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: fortran X-Bugzilla-Version: 12.0 X-Bugzilla-Keywords: ice-on-invalid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: jvdelisle at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: jvdelisle at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: assigned_to 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=3D102595 Jerry DeLisle changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |jvdelisle at gcc do= t gnu.org --- Comment #10 from Jerry DeLisle --- The following appears to catch it correctly. The previous spot I removed a= fter spotting while checking the addition to primary.cc. I keep the error messa= ge similar so that existing tests in gfortrn.dg pass without changing. diff --git a/gcc/fortran/data.cc b/gcc/fortran/data.cc index 443d35da9cf..d29eb12c1b1 100644 --- a/gcc/fortran/data.cc +++ b/gcc/fortran/data.cc @@ -244,13 +244,6 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rva= lue, mpz_t index, "array-element nor a scalar-structure-component"; symbol =3D lvalue->symtree->n.sym; - if (symbol->attr.flavor =3D=3D FL_PARAMETER) - { - gfc_error ("PARAMETER %qs shall not appear in a DATA statement at %L= ", - symbol->name, &lvalue->where); - return false; - } - init =3D symbol->value; last_ts =3D &symbol->ts; last_con =3D NULL; diff --git a/gcc/fortran/primary.cc b/gcc/fortran/primary.cc index 543d9cc0de4..158f039f225 100644 --- a/gcc/fortran/primary.cc +++ b/gcc/fortran/primary.cc @@ -4076,6 +4076,11 @@ match_variable (gfc_expr **result, int equiv_flag, i= nt host_flag) gfc_error ("Named constant at %C in an EQUIVALENCE"); return MATCH_ERROR; } + if (gfc_in_match_data()) + { + gfc_error ("PARAMETER %qs shall not appear in a DATA statement at %C", + sym->name); + } /* Otherwise this is checked for and an error given in the variable definition context checks. */ break;=