From patchwork Wed Aug 4 21:09: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: 1513648 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=2620:52:3:1:0:246e:9693:128c; helo=sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) 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=dTEJ9yFY; dkim-atps=neutral Received: from sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (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 4Gg4Ch0h33z9sRK for ; Thu, 5 Aug 2021 07:10:55 +1000 (AEST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 6465639874F5 for ; Wed, 4 Aug 2021 21:10:52 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6465639874F5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1628111452; bh=01FsmqH+0RNSMt0WF7Cbg8j/zln+haUdgSmlvLtnw6I=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=dTEJ9yFYNMMtXXjsoO/2wFPECzxeIYz8xUp/hudA3bF8pOPiK5LcAXKllKx9+Mzi6 WNqzsH6Z5rUhTqoi148Sf6kCPXxU+YSjyempIx2LikSouc4J3Ikk/J42IIEqObDBz/ d2cSosfsifO0qPFt0t3TLSp4BjzJxWcMxbWnG5bY= 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 58A69398702A; Wed, 4 Aug 2021 21:09:49 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 58A69398702A X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [93.207.81.71] ([93.207.81.71]) by web-mail.gmx.net (3c-app-gmx-bap22.server.lan [172.19.172.92]) (via HTTP); Wed, 4 Aug 2021 23:09:47 +0200 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: =?utf-8?q?=5BPATCH=2C_part2=5D_PR_fortran/98411_=5B10/11/12_Regress?= =?utf-8?q?ion=5D_Pointless=3A_Array_larger_than_=E2=80=98-fmax-stack-var-si?= =?utf-8?q?ze=3D=E2=80=99=2C_=2E=2E=2E?= Date: Wed, 4 Aug 2021 23:09:47 +0200 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:yys274EB1UQH+ltD2I8GJ57W3Mud6H/7hv1zLtiFToDMku3SbogvWownsU+7H0itCMQMk r8pj2QmlUOc40P5zJoiQEWHHlYQmpLLHrZV9HobE0Bu1Jk0ESlcSdI55ZoD7jd5iGHmEGpMMFVdz ARvGrfCXR8pJJnQkZzmr914w/zh6babxSgLAgkGUmhawnXnZ+4gvSU0Gf/iBs5+WgeMUFo+q+Ybv xCDH7gvfOvqZrksDgMxUVOV3dWK07NigQxnHYnVn1AraZUSl1H6yjjfPj5A84FSgg3uxzxpmJKxT aw= X-UI-Out-Filterresults: notjunk:1;V03:K0:ZlLoofI/XD0=:4RwnngNZhNFSKVYggNOXmZ tFLngKUBRZQaDm/eot9rHbeamj4LogezRCIHwCFwkRo5JJ7aaDc9jOgQ7fqIN5EWcF6GBySD1 WCFsWwKeRdpAnxMa0bXh6I2ZUuoUZDfaqHx07HQ71Lhat9fcix3WjcW24Gu8y2eX2P52t/c5f vR3dDBX3n0QkBNj3bLI58ECUmImCee6ouMbCB2xUXR94rSx+gf84soksUi4uYcsRBFCVtpK7A o3OmUrxuv2f+nIVIPmhe83qa+AbVDEDYMrkdDUxe85NSNpkl6EXabIX9kCwg5OIyWNjppvcr8 DJhR5MTynRkg76bGkZqyRkXmU5WNPmXGfyiD/IL3FpC0O+5erJ+F7nzL73pv5cCq25LlJcj32 /yPTLYOlY8vnacSls9xUX/Ru9FNUC/G1TlPDYP7YSOZ1a7NmA1zzfTXOjzFTNDzDMIfAFrsrM WXRBRvUkZWscjXkvG+SKwvUUNVs1ftLM4ZfsNak24tSU/C3X3o+aGvLhvJgQF/IDF4C00YsOO VfiK+DoqseebLeVjyvsJiZxUwOAC0h3RoCwVc7uQfy2vMV4ZInsOvVZ6LnC7mRrlHlvmMxI5C k6ydS97Wby7TLNouOcYfmAYXzVxwXSANpRx+Pwu+2qsknvi13b2IvzR4qkWOB0SpUHrJp4ndm HWmE2BKRfUGxPBSZU2HZUL2xrzi5b255fpOPZqMY0xBd5vr1bmbHmwJ0x9JSjlvdtTLvvoXNJ hefQd9AjYwh5wg3JrohZ52RlWo4wCPQK27l/8QygoauIFHdvHCMysIbhrr29Q+fcHXlFGnstR cfNL4ePc4/s2Z0fXAWJJS47yDJIpg== X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, 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: , X-Patchwork-Original-From: Harald Anlauf via Gcc-patches From: Harald Anlauf Reply-To: Harald Anlauf Errors-To: gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org Sender: "Gcc-patches" Dear all, here's the second part that should fix this regression for good. The patch also adjusts the warning message to make it easier to understand, using the suggestion by Tobias (see PR). Since F2018 in principle makes RECURSIVE the default, which might conflict with the purpose of the testcase, I chose to change the options to include -std=f2008, and to verify that implicit SAVE works the same as explicit SAVE. Regtested on x86_64-pc-linux-gnu. OK for affected branches? Thanks, Harald Fortran: fix pointless warning for static variables gcc/fortran/ChangeLog: PR fortran/98411 * trans-decl.c (gfc_finish_var_decl): Adjust check to handle implicit SAVE as well as variables in the main program. Improve warning message text. gcc/testsuite/ChangeLog: PR fortran/98411 * gfortran.dg/pr98411.f90: Adjust testcase options to restrict to F2008, and verify case of implicit SAVE. diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 784f7b61ce1..bed61e2325d 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -743,8 +743,10 @@ gfc_finish_var_decl (tree decl, gfc_symbol * sym) /* Keep variables larger than max-stack-var-size off stack. */ if (!(sym->ns->proc_name && sym->ns->proc_name->attr.recursive) + && !(sym->ns->proc_name && sym->ns->proc_name->attr.is_main_program) && !sym->attr.automatic && sym->attr.save != SAVE_EXPLICIT + && sym->attr.save != SAVE_IMPLICIT && INTEGER_CST_P (DECL_SIZE_UNIT (decl)) && !gfc_can_put_var_on_stack (DECL_SIZE_UNIT (decl)) /* Put variable length auto array pointers always into stack. */ @@ -757,13 +759,17 @@ gfc_finish_var_decl (tree decl, gfc_symbol * sym) { if (flag_max_stack_var_size > 0) gfc_warning (OPT_Wsurprising, - "Array %qs at %L is larger than limit set by" - " %<-fmax-stack-var-size=%>, moved from stack to static" - " storage. This makes the procedure unsafe when called" - " recursively, or concurrently from multiple threads." - " Consider using %<-frecursive%>, or increase the" - " %<-fmax-stack-var-size=%> limit, or change the code to" - " use an ALLOCATABLE array.", + "Array %qs at %L is larger than limit set by " + "%<-fmax-stack-var-size=%>, moved from stack to static " + "storage. This makes the procedure unsafe when called " + "recursively, or concurrently from multiple threads. " + "Consider increasing the %<-fmax-stack-var-size=%> " + "limit (or use %<-frecursive%>, which implies " + "unlimited %<-fmax-stack-var-size%>) - or change the " + "code to use an ALLOCATABLE array. If the variable is " + "never accessed concurrently, this warning can be " + "ignored, and the variable could also be declared with " + "the SAVE attribute.", sym->name, &sym->declared_at); TREE_STATIC (decl) = 1; diff --git a/gcc/testsuite/gfortran.dg/pr98411.f90 b/gcc/testsuite/gfortran.dg/pr98411.f90 index 249afaea419..7c906a96f60 100644 --- a/gcc/testsuite/gfortran.dg/pr98411.f90 +++ b/gcc/testsuite/gfortran.dg/pr98411.f90 @@ -1,5 +1,5 @@ ! { dg-do compile } -! { dg-options "-Wall -fautomatic -fmax-stack-var-size=100" } +! { dg-options "-std=f2008 -Wall -fautomatic -fmax-stack-var-size=100" } ! PR fortran/98411 - Pointless warning for static variables module try @@ -9,8 +9,10 @@ contains subroutine initmodule real, save :: b(1000) logical :: c(1000) ! { dg-warning "moved from stack to static storage" } + integer :: e(1000) = 1 a(1) = 42 b(2) = 3.14 c(3) = .true. + e(5) = -1 end subroutine initmodule end module try