From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 06844385DC19; Thu, 9 Apr 2020 21:47:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 06844385DC19 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1586468845; bh=DeStyODDCHCqnSuIn4NT4OGP9XTOM8yyW+Z67C9ONkU=; h=From:To:Subject:Date:In-Reply-To:References:From; b=VgLFsdbhARW/mcf8G9ca7sLwl3wdqDt4WbQPW2FCr0RfhiGKEfFmC6mvuMENlJBY8 tQ9Q5tB9ppJD7plJFTzYUBWUgFICLAN3jzYKoNApTZ3TC/rflffOeDcc1PAU2nZVAW HbR4LbwKIYlxprbxGWT+byn1Ol63ye1EjqeYnlYg= From: "cvs-commit at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug fortran/87923] ICE in gfc_widechar_to_char, at fortran/scanner.c:198 Date: Thu, 09 Apr 2020 21:47:24 +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: 9.0 X-Bugzilla-Keywords: ice-on-invalid-code X-Bugzilla-Severity: normal X-Bugzilla-Who: cvs-commit at gcc dot gnu.org X-Bugzilla-Status: WAITING X-Bugzilla-Resolution: X-Bugzilla-Priority: P4 X-Bugzilla-Assigned-To: foreese at gcc dot gnu.org X-Bugzilla-Target-Milestone: 10.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 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Apr 2020 21:47:25 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D87923 --- Comment #4 from CVS Commits --- The master branch has been updated by Fritz Reese : https://gcc.gnu.org/g:44facdb79f2d96ea8f5f93cfd440b3d0351d9bdb commit r10-7670-g44facdb79f2d96ea8f5f93cfd440b3d0351d9bdb Author: Fritz Reese Date: Thu Apr 9 16:55:44 2020 -0400 PR fortran/87923 -- fix ICE when resolving I/O tags and simplify io.c 2020-04-06 Fritz Reese This patch reorganizes I/O checking code. Checks which were done in the matching phase which do not affect the match result are moved to the resolution phase. Checks which were duplicated in both the matching pha= se and resolution phase have been reduced to one check in the resolution phase. Another section of code which used a global async_io_dt flag to check f= or and assign the asynchronous attribute to variables used in asynchronous= I/O has been simplified. Furthermore, this patch improves error reporting and expands test cover= age of I/O tags: - "TAG must be an initialization expression" reported by io.c (check_io_constraints) is replaced with an error from expr.c (gfc_reduce_init_expr) indicating _why_ the expression is not a valid initialization expression. - Several distinct error messages regarding the check for scalar + character + default kind have been unified to one message reported= by resolve_tag or check_*_constraints. gcc/fortran/ChangeLog: 2020-04-09 Fritz Reese PR fortran/87923 * gfortran.h (gfc_resolve_open, gfc_resolve_close): Add locus parameter. (gfc_resolve_dt): Add code parameter. * io.c (async_io_dt, check_char_variable, is_char_type): Remove= d. (resolve_tag_format): Add locus to error message regarding zero-sized array in FORMAT tag. (check_open_constraints, check_close_constraints): New functions called at resolution time. (gfc_match_open, gfc_match_close, match_io): Move checks which don't affect the match result to new functions check_open_constraints, check_close_constraints, check_io_constraints. (gfc_resolve_open, gfc_resolve_close): Call new functions check_open_constraints, check_close_constraints after all tags = have been independently resolved. Remove duplicate constraints which are already verified by resolve_tag. Explicitly pass locus to all e= rror reports. (compare_to_allowed_values): Add locus parameter and provide explicit locus all error reports. (match_open_element, match_close_element, match_file_element, match_dt_element, match_inquire_element): Remove redundant spec= ial cases for ASYNCHRONOUS and IOMSG tags. (gfc_resolve_dt): Remove redundant special case for format expression. Call check_io_constraints, forwarding an I/O list = as the io_code parameter if present. (check_io_constraints): Change return type to bool. Pass explic= it locus to error reports. Move generic checks after tag-specific checks, since errors are no longer buffered. Move simplificati= on of format string to match_io. Remove redundant checks which are verified by resolve_tag. Remove usage of async_io_dt flag and explicitly mark symbols used in asynchronous I/O with the asynchronous attribute. * resolve.c (resolve_transfer, resolve_fl_namelist): Remove che= cks for async_io_dt flag. This is now done in io.c (check_io_constraints). (gfc_resolve_code): Pass code locus to gfc_resolve_open, gfc_resolve_close, gfc_resolve_dt. gcc/testsuite/ChangeLog: 2020-04-09 Fritz Reese PR fortran/87923 * gfortran.dg/f2003_io_8.f03: Fix expected error messages. * gfortran.dg/io_constraints_8.f90: Likewise. * gfortran.dg/iomsg_2.f90: Likewise. * gfortran.dg/pr66725.f90: Likewise. * gfortran.dg/pr88205.f90: Likewise. * gfortran.dg/write_check4.f90: Likewise. * gfortran.dg/asynchronous_5.f03: New test. * gfortran.dg/io_constraints_15.f90: Likewise. * gfortran.dg/io_constraints_16.f90: Likewise. * gfortran.dg/io_constraints_17.f90: Likewise. * gfortran.dg/io_constraints_18.f90: Likewise. * gfortran.dg/io_tags_1.f90: Likewise. * gfortran.dg/io_tags_10.f90: Likewise. * gfortran.dg/io_tags_2.f90: Likewise. * gfortran.dg/io_tags_3.f90: Likewise. * gfortran.dg/io_tags_4.f90: Likewise. * gfortran.dg/io_tags_5.f90: Likewise. * gfortran.dg/io_tags_6.f90: Likewise. * gfortran.dg/io_tags_7.f90: Likewise. * gfortran.dg/io_tags_8.f90: Likewise. * gfortran.dg/io_tags_9.f90: Likewise. * gfortran.dg/write_check5.f90: Likewise.=