From patchwork Thu Sep 23 23:19:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sandra Loosemore X-Patchwork-Id: 45403 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3BDBB385841A for ; Thu, 23 Sep 2021 23:20:17 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id 1C5453858D29; Thu, 23 Sep 2021 23:19:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1C5453858D29 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com IronPort-SDR: yIdfDvbJCMCI68RrXwTlMBElnOwWKNxnwqBTwVVUzvWc1/XADIH/zlcMGDp+HB8jhSUE6a0FbX YuzFIOFSztIwBmtqfWwCNYlM/V5Us9EBlf0sokH/oMGfKmkk1vldkDOwbhBEIHVV89tSr3sFTH vnLAOQWSaIANa7lUPPptX/6lrBmGLWbpIwsLWiOA/KEpmCBH8W2M1nHkxXkcf/itRjVrU1sq/a 3+Pr+L0jv/bmdciBzxX8WGF3xfWd0ogZzqwNbhzqFFaZY7WcrfXgXOlI2HPehRw1IrNzUlVdmc usr98vK1vhLyRkL5GjUYQdRI X-IronPort-AV: E=Sophos;i="5.85,318,1624348800"; d="scan'208";a="66405200" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa4.mentor.iphmx.com with ESMTP; 23 Sep 2021 15:19:50 -0800 IronPort-SDR: JNkiXgAZtrI2YONa9slpgFlG1npexun3py0IKJNTKWQdzoxhLEoujGIk0BhlgJFTa1izrZmTtx QZucrmDUBY1UJmosC9ERS5fk3zsAwpRPVD0NuSGyIhcG0csq7oHqnhCu2wOY5Pl4bDUy2DohId l6GYaWtBD0TaDX6i1P+70jcivxwNa4b/neGZF2pvsaZwjG9yntWhkJXBWjQXrWSVVJP7wrsVCn yucvQoeNPv0qoFy1AO+5oW9I5vuDrEK1B1DH5sp30zbyl32BT5ReBqhHXkU0K9I4boP56RKP6q okA= To: "fortran@gcc.gnu.org" , "gcc-patches@gcc.gnu.org" From: Sandra Loosemore Subject: [PATCH, Fortran] Add missing diagnostic for F2018 C711 (TS29113 C407c) Message-ID: Date: Thu, 23 Sep 2021 17:19:44 -0600 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 Content-Language: en-US X-ClientProxiedBy: SVR-ORW-MBX-09.mgc.mentorg.com (147.34.90.209) To svr-orw-mbx-03.mgc.mentorg.com (147.34.90.203) X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Here's another missing-diagnostic patch for the Fortran front end, this time for PR Fortran/101333. OK to commit? -Sandra commit 53171e748e28901693ca4362ff658883dab97e13 Author: Sandra Loosemore Date: Thu Sep 23 15:00:43 2021 -0700 Fortran: Add missing diagnostic for F2018 C711 (TS29113 C407c) 2021-09-23 Sandra Loosemore PR Fortran/101333 gcc/fortran/ * interface.c (compare_parameter): Enforce F2018 C711. gcc/testsuite/ * gfortran.dg/c-interop/c407c-1.f90: Remove xfails. diff --git a/gcc/fortran/interface.c b/gcc/fortran/interface.c index dae4b95..a2fea0e 100644 --- a/gcc/fortran/interface.c +++ b/gcc/fortran/interface.c @@ -2448,6 +2448,21 @@ compare_parameter (gfc_symbol *formal, gfc_expr *actual, return false; } + /* TS29113 C407c; F2018 C711. */ + if (actual->ts.type == BT_ASSUMED + && symbol_rank (formal) == -1 + && actual->rank != -1 + && !(actual->symtree->n.sym->as + && actual->symtree->n.sym->as->type == AS_ASSUMED_SHAPE)) + { + if (where) + gfc_error ("Assumed-type actual argument at %L corresponding to " + "assumed-rank dummy argument %qs must be " + "assumed-shape or assumed-rank", + &actual->where, formal->name); + return false; + } + /* F2008, 12.5.2.5; IR F08/0073. */ if (formal->ts.type == BT_CLASS && formal->attr.class_ok && actual->expr_type != EXPR_NULL diff --git a/gcc/testsuite/gfortran.dg/c-interop/c407c-1.f90 b/gcc/testsuite/gfortran.dg/c-interop/c407c-1.f90 index e4da66a..c77e6ac 100644 --- a/gcc/testsuite/gfortran.dg/c-interop/c407c-1.f90 +++ b/gcc/testsuite/gfortran.dg/c-interop/c407c-1.f90 @@ -44,7 +44,7 @@ subroutine s2 (x) implicit none type(*) :: x(*) - call g (x, 1) ! { dg-error "Assumed.type" "pr101333" { xfail *-*-* } } + call g (x, 1) ! { dg-error "Assumed.type" } end subroutine ! Check that a scalar gives an error. @@ -53,7 +53,7 @@ subroutine s3 (x) implicit none type(*) :: x - call g (x, 1) ! { dg-error "Assumed.type" "pr101333" { xfail *-*-* } } + call g (x, 1) ! { dg-error "Assumed.type" } end subroutine ! Explicit-shape assumed-type actual arguments are forbidden implicitly