From patchwork Sat Jan 21 01:46:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerry D X-Patchwork-Id: 63543 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 2E37A3858281 for ; Sat, 21 Jan 2023 01:47:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 2E37A3858281 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1674265634; bh=mLOCiwfUL/uz81R+dHrApLyn0RQS/ovQVCDpQdwppX0=; h=Date:To:Cc:Subject:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=eiUbhKp+SmVDEWJ456iC+Yt5+OAnzhsYseN+pz7F8iCQyAUeG5w8kg9jcX7INQLLn N2wmr/lQA76Yn0O4rdTCz07NnQjiGKy5G/Gd/Vg2o6jzdfhhTNZvgHElk778nh1C88 279CNZfgqKkrPtc4paGYdMYxwlzz1evLekAboQPU= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) by sourceware.org (Postfix) with ESMTPS id 04F6B3858D20; Sat, 21 Jan 2023 01:46:42 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 04F6B3858D20 Received: by mail-pl1-x633.google.com with SMTP id k18so6819771pll.5; Fri, 20 Jan 2023 17:46:41 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=subject:from:cc:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=mLOCiwfUL/uz81R+dHrApLyn0RQS/ovQVCDpQdwppX0=; b=aMyJZLfqrpbFBUDqsLluB+cpuyiCjQZKuv2++bluIUB3AQ3LLDqc7y0W+vLboez/am Y+uzf0EwNgIrEPkx/zordZXw9+IMMEyCAztPNMHqumblM6a823nqE7e5M0bjZOrLvVtu MVofWyGyyvGbuWZwhOxXuO+u6DrhyK94vWMqU3moevffBEVkjQ/qrx9+AJZhb3ohbO4Y jrZDtwM3GdvLM6D3+/OChC3m4EL/SypZ9CoVdcoUG+AKahVx7Q2KHGDiB9EnPIk01/Te SU1PwoIdVetIdUbljSUwcmW2Lh3o9wNovT7PsMLqMa7IwhyTkDBu1Z8ll0WEl0tgIGCk MSsQ== X-Gm-Message-State: AFqh2kqmN2yaok8gjMxFPmH6OKUeooQ3Ii4Jpcy4BcRTovXaRcCsrOpk Fa64OoRu2OMjBvDIZipp37sazR0Ka3o= X-Google-Smtp-Source: AMrXdXskuN02Xaq9JUNthG++KGvPnvD2OEqwUtYI/7XkaBUT8BFvCsGD2+2ubui0QjNouSaNH8D2yQ== X-Received: by 2002:a17:902:b591:b0:18f:a0de:6ac8 with SMTP id a17-20020a170902b59100b0018fa0de6ac8mr4158093pls.2.1674265600749; Fri, 20 Jan 2023 17:46:40 -0800 (PST) Received: from [192.168.1.20] ([50.37.188.226]) by smtp.gmail.com with ESMTPSA id k7-20020a170902ce0700b001929827731esm27440329plg.201.2023.01.20.17.46.40 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 20 Jan 2023 17:46:40 -0800 (PST) Message-ID: Date: Fri, 20 Jan 2023 17:46:39 -0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Content-Language: en-US To: gfortran Cc: gcc-patches Subject: [patch. fortran] PR102595 ICE in var_element, at fortran/decl.c X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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: Jerry D via Gcc-patches From: Jerry D Reply-To: Jerry D Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" A PARAMETER value is not allowed in a DATA statement, similar to an EQUIVALENCE. The check for this was in gfc_assign_data_value() in data.cc which turns out to be too late when trying to assign a zero sized array. To correct this, the check is moved to match_variable() in primary.cc where a similar check for EQUIVALENCE is already being performed. Regression tested on x86_64-linux-gnu. I will create a test case from the case presented in the PR which is trivial. There are already two other tests in the test suite that exercise this check. OK for trunk? Regards, Jerry diff --git a/gcc/fortran/data.cc b/gcc/fortran/data.cc index 443d35da9cf..d29eb12c1b1 100644 --- a/gcc/fortran/data.cc +++ b/gcc/fortran/data.cc @@ -244,13 +244,6 @@ gfc_assign_data_value (gfc_expr *lvalue, gfc_expr *rvalue, mpz_t index, "array-element nor a scalar-structure-component"; symbol = lvalue->symtree->n.sym; - if (symbol->attr.flavor == FL_PARAMETER) - { - gfc_error ("PARAMETER %qs shall not appear in a DATA statement at %L", - symbol->name, &lvalue->where); - return false; - } - init = symbol->value; last_ts = &symbol->ts; last_con = NULL; diff --git a/gcc/fortran/primary.cc b/gcc/fortran/primary.cc index 543d9cc0de4..158f039f225 100644 --- a/gcc/fortran/primary.cc +++ b/gcc/fortran/primary.cc @@ -4076,6 +4076,11 @@ match_variable (gfc_expr **result, int equiv_flag, int host_flag) gfc_error ("Named constant at %C in an EQUIVALENCE"); return MATCH_ERROR; } + if (gfc_in_match_data()) + { + gfc_error ("PARAMETER %qs shall not appear in a DATA statement at %C", + sym->name); + } /* Otherwise this is checked for and an error given in the variable definition context checks. */ break;