From 68f9c41d54a7839e90d10e1400c8726c8ccde88d Mon Sep 17 00:00:00 2001 From: David Malcolm Date: Mon, 17 Feb 2020 03:28:08 -0500 Subject: [PATCH] analyzer: add test coverage for gfortran ICE fix [PR 93779] PR analyzer/93779 reports an ICE in gfortran with -fanalyzer that was fixed for GCC 10 by a workaround in f76a88ebf089871dcce215aa0cb1956ccc060895; the tree code in question is a FUNCTION_DECL. Given that I want to rework the above patch at some point, it seems prudent to add test coverage to ensure the ICE doesn't come back, which this patch does. gcc/testsuite/ChangeLog: PR analyzer/93779 * gfortran.dg/analyzer/pr88304-2.f90: New test, adapted from gfortran.fortran-torture/compile/pr88304-2.f90 --- gcc/testsuite/ChangeLog | 6 ++++ .../gfortran.dg/analyzer/pr88304-2.f90 | 29 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 gcc/testsuite/gfortran.dg/analyzer/pr88304-2.f90 diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f9a545e2d93..c6b76dfac65 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2020-02-18 David Malcolm + + PR analyzer/93779 + * gfortran.dg/analyzer/pr88304-2.f90: New test, adapted from + gfortran.fortran-torture/compile/pr88304-2.f90 + 2020-02-18 Mark Eggleston PR fortran/93603 diff --git a/gcc/testsuite/gfortran.dg/analyzer/pr88304-2.f90 b/gcc/testsuite/gfortran.dg/analyzer/pr88304-2.f90 new file mode 100644 index 00000000000..6b3ab89adce --- /dev/null +++ b/gcc/testsuite/gfortran.dg/analyzer/pr88304-2.f90 @@ -0,0 +1,29 @@ +! Copy of gfortran.fortran-torture/compile/pr88304-2.f90 +! as a regression test for ICE with -fanalyzer (PR analyzer/93779) + +module pr88304 + implicit none + integer :: p +contains + function foo (x, y, z, w) + integer, intent(in) :: x, y + character(*), optional, intent(out) :: z + integer, optional, intent(out) :: w + integer :: foo + foo = 1 + end function foo + subroutine bar () + integer :: s + s = baz (1) + contains + function baz (u) + integer, intent(in) :: u + integer :: baz + integer :: q + integer :: r (10) + r = 0 + baz = 1 + q = foo (p, r(u), w = baz) + end function baz + end subroutine bar +end module pr88304 -- 2.30.2