From patchwork Fri Nov 19 19:47:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Harald Anlauf X-Patchwork-Id: 47950 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 27BF93858038 for ; Fri, 19 Nov 2021 19:47:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 27BF93858038 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1637351275; bh=XyGlowNeOSTF6AuKpLSUI0gbEfTOzn4VapS94GOBhu8=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=q+U48gekTO88lR6RCaelsSMo2U03lD4Q4Adk44lQU4Mh+FkJqcNCXJuxT+U3IcfxE l5TLmX8Lw8qqWe+qYtWqihHgCuv2lDi81P04RtkkmmTATFfjGTs8tud01JTP1m6eaQ HBBX+NH/Zzwi/2XUlG7dCqP4n1gO+XjnyyTa82c0= 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.22]) by sourceware.org (Postfix) with ESMTPS id 0127B385840D; Fri, 19 Nov 2021 19:47:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 0127B385840D X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [79.251.11.129] ([79.251.11.129]) by web-mail.gmx.net (3c-app-gmx-bap45.server.lan [172.19.172.115]) (via HTTP); Fri, 19 Nov 2021 20:47:07 +0100 MIME-Version: 1.0 Message-ID: To: fortran , gcc-patches Subject: [PATCH] PR fortran/87851 - [9/10/11/12 Regression] Wrong return type for len_trim Date: Fri, 19 Nov 2021 20:47:07 +0100 Importance: normal Sensitivity: Normal X-Priority: 3 X-Provags-ID: V03:K1:fLITwlijdUOMoxZI5ovsMMaGftikLq3SF1QA7hdDTuCYUTiDyBLbdONbDSKoWTPqD20VP Q+gJ0WFkOQiSX26dbAMsi8i4Zza4ssXt+YdlURfqGK++zJJ8SM1bMXzm2DwTHsXvPJvRh1UtL//H JeFAx9zweoM6cJ3PlDDCd/aHmPFviBfdbmxrFHtWO47YAxRjo1zXadeX0J1vXNfy3NZjZxWQzhDH 3RZhDSaXAfJTRLolDGnGrpadfi+957qVcXSvo8+kRg0GxJcpciXv4J800WSO8z1YwfH3RjZG/uqw hk= X-UI-Out-Filterresults: notjunk:1;V03:K0:A1dKm8Pjo/U=:6WHmif0Gs6N33Jczr7TQSq Nkl5qIcNOlep+TPF3hCJTB4s2E7aRJYuM4GhTGabDRThysjQKboQlMX2b4pJgdO6o5GJ8oxud H9vnjyGo90M24EQM6Bj9mhmkq10+aD+s19HzGfwSSd9b3hu0TXA6YvQzlwKdUP3g+pwsnmbCg sQFej4RwjTDAzedx5O8mv6jA8sMTQ9cW3RmQd7oe8PuxOSQ7OHZF5ZYFzuSCm8iw6o8Vp4mCw ma0CWYPLmkiwaYuUZqTc9SYbxv3n0vlIVeodpvTjNqmKrUxKkp1iFqP657LF8kas/knaSwhMY 3MTfLp6aJ4cm6N4U9vQxXkaPn2lD7bWnQFpnblNxCHebr+WmdfJDtMBUl6rbccM0qyWx1o3OU vMmSuu5JHTRkXrLheeSjGK3igLjrlSOdZFK/yxIfEzh9STk5u7acRv/rMDBEMhNJTxWtwfAwD cJ16iy+96MpIIcsonIYNeKMPEkrZbKZHqNUgWqY5MAXR3EOTpF2WXsk/mVAm6ZapdFQdFgGuS kQNfYE5vAh71BZ5aOM2zvki9dPCs+8+VND1kZNtFY6nre8WIjBfuK85v/hpcElC8kBKqjUYEK pXeItNB4+BepfPtuc5Qi9zJrBHoiXPeBx9wQKA77kFMsdkHTWmRxz9gnmgBz8jTE3g7QZm28Y KfFm8O4xzCk0DTL4L7JqslZiIh4ixXPItGGu9v+J/xRWAVvphRtP0CdpHAcSXcm6ImIYt7oL1 oQtRqzGK48uaJlWcKFJnrR4kOr2K1oMDYdDmbzniq/EPP9hZc+mwOGh74yc= X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, 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+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Dear Fortranners, scalariziation of the elemental intrinsic LEN_TRIM was ICEing when the optional KIND argument was present. The cleanest solution is to use the infrastructure added by Mikael's fix for PR97896. In that case it is a 1-liner. :-) That fix is available on mainline and on 11-branch only, though. My suggestion is to fix the current PR only for the same branches, leaving the regression unfixed for older ones. Regtested on x86_64-pc-linux-gnu. OK for mainline and 11-branch? Thanks, Harald From f700c43fef4a239af25dd30dc22930b1bb1dbe95 Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Fri, 19 Nov 2021 20:20:44 +0100 Subject: [PATCH] Fortran: fix scalarization for intrinsic LEN_TRIM with present KIND argument gcc/fortran/ChangeLog: PR fortran/87851 * trans-array.c (arg_evaluated_for_scalarization): Add LEN_TRIM to list of intrinsics for which an optional KIND argument needs to be removed before scalarization. gcc/testsuite/ChangeLog: PR fortran/87851 * gfortran.dg/len_trim.f90: New test. --- gcc/fortran/trans-array.c | 1 + gcc/testsuite/gfortran.dg/len_trim.f90 | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/len_trim.f90 diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 2090adf01e7..238b1b72385 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -11499,6 +11499,7 @@ arg_evaluated_for_scalarization (gfc_intrinsic_sym *function, switch (function->id) { case GFC_ISYM_INDEX: + case GFC_ISYM_LEN_TRIM: if (strcmp ("kind", gfc_dummy_arg_get_name (*dummy_arg)) == 0) return false; /* Fallthrough. */ diff --git a/gcc/testsuite/gfortran.dg/len_trim.f90 b/gcc/testsuite/gfortran.dg/len_trim.f90 new file mode 100644 index 00000000000..63f803960d5 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/len_trim.f90 @@ -0,0 +1,26 @@ +! { dg-do compile } +! { dg-options "-O -Wall -Wconversion-extra -fdump-tree-original" } +! { dg-final { scan-tree-dump-not "_gfortran_stop_numeric" "original" } } +! PR fortran/87851 - return type for len_trim + +program main + implicit none + character(3), parameter :: a(1) = 'aa' + character(3) :: b = "bb" + character(3) :: c(1) = 'cc' + integer(4), parameter :: l4(1) = len_trim (a, kind=4) + integer(8), parameter :: l8(1) = len_trim (a, kind=8) + integer :: kk(1) = len_trim (a) + integer(4) :: mm(1) = len_trim (a, kind=4) + integer(8) :: nn(1) = len_trim (a, kind=8) + kk = len_trim (a) + mm = len_trim (a, kind=4) + nn = len_trim (a, kind=8) + kk = len_trim ([b]) + mm = len_trim ([b],kind=4) + nn = len_trim ([b],kind=8) + kk = len_trim (c) + mm = len_trim (c, kind=4) + nn = len_trim (c, kind=8) + if (any (l4 /= 2_4) .or. any (l8 /= 2_8)) stop 1 +end program main -- 2.26.2