From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1442) id 8C7323858D32; Sun, 29 Jan 2023 19:10:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8C7323858D32 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1675019427; bh=mZ4mFWA1c3OQo1c3JJCR2+cslPwevVvwZxtb5OLctgg=; h=From:To:Subject:Date:From; b=wfZboJ7su50fSuMeTsTc+UK9tDeckNTqVwQFIIWkojGC4u21H/ujbJcFYGF4dmg0Q sw1wTuOmORvk2Xvg6SuOpSTdeq2XpQ7PEsaYqUN2JiYIixvWKbJTtyB4cCLjHJn2zU YPUDVfnR2gfcEmVcSrJyfrWz4njD/RkCv4IK53vY= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jerry DeLisle To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-5485] ICE in gfc_free_namespace. ice-on-invalid. X-Act-Checkin: gcc X-Git-Author: Jerry DeLisle X-Git-Refname: refs/heads/master X-Git-Oldrev: da3aca031be736fe4fa8daa57c7efa69dc767160 X-Git-Newrev: 8011fbba7baa46947341ca8069b5a327163a68d5 Message-Id: <20230129191027.8C7323858D32@sourceware.org> Date: Sun, 29 Jan 2023 19:10:27 +0000 (GMT) List-Id: https://gcc.gnu.org/g:8011fbba7baa46947341ca8069b5a327163a68d5 commit r13-5485-g8011fbba7baa46947341ca8069b5a327163a68d5 Author: Jerry DeLisle Date: Sat Jan 28 20:00:34 2023 -0800 ICE in gfc_free_namespace. ice-on-invalid. PR fortran/103506 gcc/fortran/ChangeLog: * parse.cc (parse_module): Remove use of a bool error value that prevented proper setting of the namespace pointer. gcc/testsuite/ChangeLog: * gfortran.dg/pr103506_1.f90: New test. Diff: --- gcc/fortran/parse.cc | 9 +-------- gcc/testsuite/gfortran.dg/pr103506_1.f90 | 9 +++++++++ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/gcc/fortran/parse.cc b/gcc/fortran/parse.cc index 0fb19cc9f0f..039e7e7da53 100644 --- a/gcc/fortran/parse.cc +++ b/gcc/fortran/parse.cc @@ -6502,7 +6502,6 @@ parse_module (void) { gfc_statement st; gfc_gsymbol *s; - bool error; s = gfc_get_gsymbol (gfc_new_block->name, false); if (s->defined || (s->type != GSYM_UNKNOWN && s->type != GSYM_MODULE)) @@ -6525,7 +6524,6 @@ parse_module (void) st = parse_spec (ST_NONE); - error = false; loop: switch (st) { @@ -6544,16 +6542,11 @@ loop: default: gfc_error ("Unexpected %s statement in MODULE at %C", gfc_ascii_statement (st)); - - error = true; reject_statement (); st = next_statement (); goto loop; } - - /* Make sure not to free the namespace twice on error. */ - if (!error) - s->ns = gfc_current_ns; + s->ns = gfc_current_ns; } diff --git a/gcc/testsuite/gfortran.dg/pr103506_1.f90 b/gcc/testsuite/gfortran.dg/pr103506_1.f90 new file mode 100644 index 00000000000..3f57809e099 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr103506_1.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! PR103506 ICE in gfc_free_namespace. ice-on-invalid +! Test case from the PR. +module m ! { dg-error "is already being used as a MODULE" } +stop ! { dg-error "Unexpected STOP statement in MODULE" } +end +program p +call m ! { dg-error "is already being used as a MODULE" } +end