From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2071) id F01F83858C62; Mon, 28 Nov 2022 18:54:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F01F83858C62 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1669661651; bh=iv3VMoF97ioYUUgroNRLcnVxUADaae9aqDWb5P50Ggw=; h=From:To:Subject:Date:From; b=pFwIzHcezvqmDCcWWY7fhe/QbVu8pfvG/NMkGsb15B7bVI3g4qruL7Tm/Vj5+Pzxi DRS8XDLSXlqk2YM2Qfs+Q2taOXc1fbHR5TPl/MBJlmhK7C/n85ZI2fNunl1A7t4ncR A4jgBPY2o+eHxuAayX0iLCoAt8yxS+YBoow46uQY= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Harald Anlauf To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-4375] Fortran: ICE with elemental and dummy argument with VALUE attribute [PR107819] X-Act-Checkin: gcc X-Git-Author: Harald Anlauf X-Git-Refname: refs/heads/master X-Git-Oldrev: 2200b7054638bbf157192a4dca23886dd420becb X-Git-Newrev: 07b9bcc1d1484f8f1c850ff14db678fb6b1e4d36 Message-Id: <20221128185411.F01F83858C62@sourceware.org> Date: Mon, 28 Nov 2022 18:54:11 +0000 (GMT) List-Id: https://gcc.gnu.org/g:07b9bcc1d1484f8f1c850ff14db678fb6b1e4d36 commit r13-4375-g07b9bcc1d1484f8f1c850ff14db678fb6b1e4d36 Author: Harald Anlauf Date: Sun Nov 27 21:10:18 2022 +0100 Fortran: ICE with elemental and dummy argument with VALUE attribute [PR107819] gcc/fortran/ChangeLog: PR fortran/107819 * trans-stmt.cc (gfc_conv_elemental_dependencies): In checking for elemental dependencies, treat dummy argument with VALUE attribute as implicitly having intent(in). gcc/testsuite/ChangeLog: PR fortran/107819 * gfortran.dg/elemental_dependency_7.f90: New test. Diff: --- gcc/fortran/trans-stmt.cc | 1 + .../gfortran.dg/elemental_dependency_7.f90 | 28 ++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/gcc/fortran/trans-stmt.cc b/gcc/fortran/trans-stmt.cc index fd6d294147e..b288f1f9050 100644 --- a/gcc/fortran/trans-stmt.cc +++ b/gcc/fortran/trans-stmt.cc @@ -264,6 +264,7 @@ gfc_conv_elemental_dependencies (gfc_se * se, gfc_se * loopse, if (e->expr_type == EXPR_VARIABLE && e->rank && fsym && fsym->attr.intent != INTENT_IN + && !fsym->attr.value && gfc_check_fncall_dependency (e, fsym->attr.intent, sym, arg0, check_variable)) { diff --git a/gcc/testsuite/gfortran.dg/elemental_dependency_7.f90 b/gcc/testsuite/gfortran.dg/elemental_dependency_7.f90 new file mode 100644 index 00000000000..ad45ea5271b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/elemental_dependency_7.f90 @@ -0,0 +1,28 @@ +! { dg-do run } +! PR fortran/107819 - ICE in gfc_check_argument_var_dependency +! Contributed by G.Steinmetz +! +! Note: the testcase is considered non-conforming for m>1 due to aliasing + +program p + implicit none + integer, parameter :: m = 1 + integer :: i + integer :: a(m) = [(-i,i=1,m)] + integer :: n(m) = [(i,i=m,1,-1)] + integer :: b(m) + b = a + call s (a(n), a) ! { dg-warning "might interfere with actual argument" } + + ! Compare to separate application of subroutine in element order + do i = 1, size (b) + call s (b(n(i)), b(i)) + end do + if (any (a /= b)) stop 1 +contains + elemental subroutine s (x, y) + integer, value :: x + integer, intent(out) :: y + y = x + end +end