From patchwork Wed Apr 12 15:25:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Richard Thomas X-Patchwork-Id: 82527 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp412119vqo; Wed, 12 Apr 2023 08:26:04 -0700 (PDT) X-Google-Smtp-Source: AKy350ZzuFwRPrbC0jSbTiM2BIApR6JazvSmrmnLZbgN3I6KnrkZSJ+5+j/GqC7g3jEy82lXeYwz X-Received: by 2002:a17:907:a08e:b0:94a:4012:87b7 with SMTP id hu14-20020a170907a08e00b0094a401287b7mr13545798ejc.41.1681313164147; Wed, 12 Apr 2023 08:26:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681313164; cv=none; d=google.com; s=arc-20160816; b=y4+LHzEHa735uLLnaHoGMCTfY06E/eXEJDEBYvgQvWHRwhery4l2i5beoLBNNMa8II SgksMAWf+U/3gIBJLMcQ7n38VNhtiRzGYXhNumhTI5Za6ld1hhZ6aqAc1tqiCFzIPMvC vTslukl3o6iGq0szo5QgXm2YgMbgCUDWEKI0TnMho3pSwUlnQc2Xktf6C7aLwPld5BuN 3hJ5ehLrkFJ69M+tsT7WU5hY/0q7QlghYcbYgGaYigjyS4o+4W/GHlQvkfB/pQBdsHpe mjHqZt/S36R4yCbE+TdljgspiIepAJthGsjLB+OaTx/47vB84v8w186k+NL6N6ZlD+fv +TuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:to:subject :message-id:date:mime-version:dmarc-filter:delivered-to :dkim-signature:dkim-filter; bh=vhz77+LKjjA5BGv7AgYn4eV0yNtduq6A5ML7p7y13iE=; b=S1kimglSasAbqCY0v8Yc6a+byzq9gZeH42FxTuwtAlayrNFqbYvZg5UDamQwfM7KYO H8iFa4boec+DF1Fqxt8J3YzErd9PDHI9McjleCqoDpFWhgwuDay6pz8QoV7hw8LyRvPX 5UBMDj0FhV5O6q5SQulnJvTwljkTdKG9we/kPrF7TovkVVMrbQCfSRlfsbduG0Lqrv1f 3mDQSjeSyh7BMiV/tx9yq8xMXsbBRAETaCX+JjG0Y2/JoCZ4GVpu4KioxYz5CgzG4ab6 1T2OtENFwwgox8VVc2tgZOg2gbCbAtKoMmcPKgrsAjoJzIoPvZKQSEeb7fl+CwHrAjkX IsnQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=joRRMkrV; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id x13-20020a170906710d00b0094aa6845719si1566754ejj.758.2023.04.12.08.26.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 12 Apr 2023 08:26:04 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=joRRMkrV; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C90D23858C54 for ; Wed, 12 Apr 2023 15:26:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C90D23858C54 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1681313162; bh=vhz77+LKjjA5BGv7AgYn4eV0yNtduq6A5ML7p7y13iE=; h=Date:Subject:To:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=joRRMkrVKZRZhHU5nqLvPEqLuoCtDdcr9/jxcU3G4opCGNuqarN2//PRegzePrpjt Hhwrwe1tyJ+tswwyzmvfR4/R5wuRSOZKjOyHZk5ZUGSQGoFPwCeij2kCXUCDEhvNDo 9kIABT+PqutNoP4D94LxfFyWBMVBx4eLXnF4VaxQ= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pj1-x102d.google.com (mail-pj1-x102d.google.com [IPv6:2607:f8b0:4864:20::102d]) by sourceware.org (Postfix) with ESMTPS id 3B7593858D28; Wed, 12 Apr 2023 15:25:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3B7593858D28 Received: by mail-pj1-x102d.google.com with SMTP id y11-20020a17090a600b00b0024693e96b58so10860626pji.1; Wed, 12 Apr 2023 08:25:19 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1681313117; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=7OWFHra944i2jqzOnulInLxM86TEvxGYi3XoW4dAXTQ=; b=V7d1umaSvnjx3NVDicFPeNOIuyHIYS9oukipqK7nE0lFISmckk3o5JZ6M2A9W0z9c9 d+nTtOpKO6OdKt++NjhHkmXCS20AQE6XlrVGmTxSpAXFpJnuThZHy58ZbuBY0TLE5Val HnKEd5HBr7jzOsPnnH6g4NYT7DZmfDx4Q9KjVssuKDJ0M4kPA13hHS++u2cZ/dR2d7Fi mtvrQczIF+SnmB5Nmsq/LXQ55q7DIPzcSKgFWA1GcMfCl+8kBMfab2HuqbwqFA01Ko2R 8hTea4WOhRBAu9G8LLHMXlnmX4RVAO9ydi3PjVUJ/fa9zSs4apTd9jiIptwu91K0K/MS NL0A== X-Gm-Message-State: AAQBX9e6QDHUg89Oyuk5mbQosxcqjQkMHNq553ZFkVlL1J4+Sm591DR5 WDxA0LBE7g46m12D58hp0ktoF0grVlFwm82HhX46oZrVOV8= X-Received: by 2002:a17:903:2282:b0:1a2:1fd0:226c with SMTP id b2-20020a170903228200b001a21fd0226cmr5159958plh.8.1681313117361; Wed, 12 Apr 2023 08:25:17 -0700 (PDT) MIME-Version: 1.0 Date: Wed, 12 Apr 2023 16:25:06 +0100 Message-ID: Subject: [Patch, fortran] PR109451 - ICE in gfc_conv_expr_descriptor with ASSOCIATE and substrings To: "fortran@gcc.gnu.org" , gcc-patches X-Spam-Status: No, score=-7.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, HTML_MESSAGE, 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-Content-Filtered-By: Mailman/MimeDel 2.1.29 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: Paul Richard Thomas via Gcc-patches From: Paul Richard Thomas Reply-To: Paul Richard Thomas Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762984632170095888?= X-GMAIL-MSGID: =?utf-8?q?1762984632170095888?= Hi All, I think that the changelog says it all. OK for mainline? Paul Fortran: Fix some deferred character problems in associate [PR109451] 2023-04-07 Paul Thomas gcc/fortran PR fortran/109451 * trans-array.cc (gfc_conv_expr_descriptor): Guard expression character length backend decl before using it. Suppress the assignment if lhs equals rhs. * trans-io.cc (gfc_trans_transfer): Scalarize transfer of associate variables pointing to a variable. Add comment. gcc/testsuite/ PR fortran/109451 * gfortran.dg/associate_61.f90 : New test diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index e1725808033..3d90a02cdac 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -7934,8 +7934,12 @@ gfc_conv_expr_descriptor (gfc_se *se, gfc_expr *expr) else tmp = se->string_length; - if (expr->ts.deferred && VAR_P (expr->ts.u.cl->backend_decl)) - gfc_add_modify (&se->pre, expr->ts.u.cl->backend_decl, tmp); + if (expr->ts.deferred && expr->ts.u.cl->backend_decl + && VAR_P (expr->ts.u.cl->backend_decl)) + { + if (expr->ts.u.cl->backend_decl != tmp) + gfc_add_modify (&se->pre, expr->ts.u.cl->backend_decl, tmp); + } else expr->ts.u.cl->backend_decl = tmp; } diff --git a/gcc/fortran/trans-io.cc b/gcc/fortran/trans-io.cc index 9b54d2f0d31..67658769b9e 100644 --- a/gcc/fortran/trans-io.cc +++ b/gcc/fortran/trans-io.cc @@ -2620,9 +2620,13 @@ gfc_trans_transfer (gfc_code * code) gcc_assert (ref && ref->type == REF_ARRAY); } + /* These expressions don't always have the dtype element length set + correctly, rendering them useless for array transfer. */ if (expr->ts.type != BT_CLASS && expr->expr_type == EXPR_VARIABLE && ((expr->symtree->n.sym->ts.type == BT_DERIVED && expr->ts.deferred) + || (expr->symtree->n.sym->assoc + && expr->symtree->n.sym->assoc->variable) || gfc_expr_attr (expr).pointer)) goto scalarize;