From patchwork Wed Jan 13 21:24:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 1426040 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=8.43.85.97; helo=sourceware.org; envelope-from=gcc-patches-bounces@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.a=rsa-sha256 header.s=default header.b=A0nRaxYm; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4DGL7b0MRBz9sVw for ; Thu, 14 Jan 2021 08:24:58 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 57B59386F02A; Wed, 13 Jan 2021 21:24:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 57B59386F02A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1610573092; bh=KA48ohE7Jlza218xS6Gc4Jafc9CgAZA3rAlm+yfVrRA=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=A0nRaxYmAt4k72NkQKknrBiuw+XXPRtH3W8SJPtyuyXJ1pyxK51PTFp9yzF+Y015V Hq0b9dm++ACjGAxaLKc3DfjN8ect2daCweDM5T4leVkl8VY3IBiDIXi3bL30CaGPSI /OWuOdv25oZpGemxr3fRQHLCht5PCmxHlYQRQsto= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mout.gmx.net (mout.gmx.net [212.227.17.21]) by sourceware.org (Postfix) with ESMTPS id 7FDC9386F02A; Wed, 13 Jan 2021 21:24:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7FDC9386F02A X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [93.207.83.179] ([93.207.83.179]) by web-mail.gmx.net (3c-app-gmx-bap27.server.lan [172.19.172.97]) (via HTTP); Wed, 13 Jan 2021 22:24:47 +0100 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH] PR fortran/98661 - valgrind issues with error recovery Date: Wed, 13 Jan 2021 22:24:47 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:f3B9VJ0BFPlfDkW9bk9Bcch8hKHDINsjeXDb7FA10gKLFmBL9svhZo48rvjEWBywoyHE7 VZiu3qWZD+nj1sZZZFgr2GqdxlNjbPr8G3/KCJxzJDD5/TR+fzQLqVZaaOt/1FTCfJt59MhNu6z1 xoydi3blpEISCXKRIWLODQN+AZS07L+i9H3d21q4oiPmWTWG5PfyWPpaXTWaJVNYKwj6hYlOZ89f kkVF74e0fEoplltgZ+k9ofeQQ120fbRgPU959QDbNqspghNy4kyFk3sI9J4Ue/j5TWeAPzwPGCLk no= X-UI-Out-Filterresults: notjunk:1;V03:K0:ZQOa7zszbV8=:ukawNSaie9dCkEC8axn3Pt 97QtJ0HOpcmsU3GiO+n3mLDSD7rfA6UwNFQn7QUNMSNdA/pwAEaIy/AlehHtjUl0+/Sf4MBqe gyZ3D1SMuHxbzhRd1PpsiqlfeCHwHn7bHLWLMW0bRpi52lS6UZAi9+AMtQtDGkyv2MDEz7aip hZNwAr1MRSrv2qPbt98KmmSqW1onqB4ArilT6lbtCrOCmBVkwws6qnVhZdKP4YTrSayLng5O9 ioeFPHk2ex4BcKrtkKTjtmqwlbJI7F4V53vLUH3TKggjdXTO1BHVbeXAtXdIHMa/AMvV2gQE2 JCpVjydc6erI27PwNfKNQ5+KP1m6tFKQWOtWtCio5NvMnPxOqkUahn97seQkj4omjlN39Xs+M u189Rupjt99/Rcwv4a8bfoyfauW1McWnFMlHyciiO+oF8TYH/cnBP/MiBy4JqXvZmKCUXcPSL HvFL7XWZJq9c/mnz5Ibj1zheEy7bsVPRNoUkxSTqmvtWl0JLtYf5cKdwNqHv6C4//FrJP4d1Y wuMxzWAmYdWt/y6OGVfeBJGMOYzs8Mh3dTvrF3v0otLeB3ndBL6DAAZsyslcSTzs4/t72pLRY 107mpwEVSVSyc= X-Spam-Status: No, score=-10.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Harald Anlauf via Gcc-patches From: Harald Anlauf Reply-To: Harald Anlauf Errors-To: gcc-patches-bounces@gcc.gnu.org Sender: "Gcc-patches" Dear all, the former Fortran testcase charlen_03.f90, which some time ago used to ICE, could still display issues during error recovery. As Dominique pointed out, this required either an instrumented compiler, or valgrind. The issue turned out to not have anything to do with CHARACTER, but with an invalid attempt resolve an invalid array specification. Regtested on x86_64-pc-linux-gnu, and checked for the testcase with valgrind. OK for master? Thanks, Harald PR fortran/98661 - valgrind issues with error recovery During error recovery after an invalid derived type specification it was possible to try to resolve an invalid array specification. We now skip this if the component has the ALLOCATABLE or POINTER attribute and the shape is not deferred. gcc/fortran/ChangeLog: PR fortran/98661 * resolve.c (resolve_component): Derived type components with ALLOCATABLE or POINTER attribute shall have a deferred shape. gcc/testsuite/ChangeLog: PR fortran/98661 * gfortran.dg/pr98661.f90: New test. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 3929ddff849..448a2362e95 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -14723,6 +14735,10 @@ resolve_component (gfc_component *c, gfc_symbol *sym) && sym != c->ts.u.derived) add_dt_to_dt_list (c->ts.u.derived); + if (c->as && c->as->type != AS_DEFERRED + && (c->attr.pointer || c->attr.allocatable)) + return false; + if (!gfc_resolve_array_spec (c->as, !(c->attr.pointer || c->attr.proc_pointer || c->attr.allocatable))) diff --git a/gcc/testsuite/gfortran.dg/pr98661.f90 b/gcc/testsuite/gfortran.dg/pr98661.f90 new file mode 100644 index 00000000000..40ddff05d43 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr98661.f90 @@ -0,0 +1,19 @@ +! { dg-do compile } +! PR fortran/98661 - valgrind issues with error recovery +! +! Test issues related to former testcase charlen_03.f90 +program p + implicit none + type t + character(:), pointer :: c(n) ! { dg-error "must have a deferred shape" } + real, allocatable :: x(n) ! { dg-error "must have a deferred shape" } + end type +end + +subroutine s +! no 'implicit none' + type u + character(:), pointer :: c(n) ! { dg-error "must have a deferred shape" } + real, allocatable :: x(n) ! { dg-error "must have a deferred shape" } + end type +end