aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.fortran-torture/compile/pr88304-2.f9028
-rw-r--r--gcc/tree-nested.c3
4 files changed, 42 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3da7dbe..f97a51e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2018-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/88304
+ * tree-nested.c (convert_local_reference_stmt): Handle clobbers where
+ lhs is not a decl normally, don't call use_pointer_in_frame on that
+ lhs.
+
2018-12-08 Eric Botcazou <ebotcazou@adacore.com>
PR rtl-optimization/88390
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index afa3d70..dc7c204 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-12-08 Jakub Jelinek <jakub@redhat.com>
+
+ PR fortran/88304
+ * gfortran.fortran-torture/compile/pr88304-2.f90: New test.
+
2018-12-07 Paolo Carlini <paolo.carlini@oracle.com>
* g++.dg/other/bitfield7.C: New.
diff --git a/gcc/testsuite/gfortran.fortran-torture/compile/pr88304-2.f90 b/gcc/testsuite/gfortran.fortran-torture/compile/pr88304-2.f90
new file mode 100644
index 0000000..15bd451
--- /dev/null
+++ b/gcc/testsuite/gfortran.fortran-torture/compile/pr88304-2.f90
@@ -0,0 +1,28 @@
+! PR fortran/88304
+
+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
diff --git a/gcc/tree-nested.c b/gcc/tree-nested.c
index ea54246..0ad469a 100644
--- a/gcc/tree-nested.c
+++ b/gcc/tree-nested.c
@@ -2324,7 +2324,8 @@ convert_local_reference_stmt (gimple_stmt_iterator *gsi, bool *handled_ops_p,
if (gimple_clobber_p (stmt))
{
tree lhs = gimple_assign_lhs (stmt);
- if (!use_pointer_in_frame (lhs)
+ if (DECL_P (lhs)
+ && !use_pointer_in_frame (lhs)
&& lookup_field_for_decl (info, lhs, NO_INSERT))
{
gsi_replace (gsi, gimple_build_nop (), true);