aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2019-02-23 14:59:50 +0000
committerpault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>2019-02-23 14:59:50 +0000
commit2005ea3f97a9bb3bdbbe7153fe2c038a555ba0d8 (patch)
tree56c5c5d7ca868d52b0a2ebfe6257d8b315847d61
parent7690c3395facc401f7b6b675ac6964f5fbce3df4 (diff)
2019-02-23 Paul Thomas <pault@gcc.gnu.org>
Backport from trunk PR fortran/88117 * resolve.c (deferred_op_assign): Return if the lhs expression has the pointer attribute. 2019-02-23 Paul Thomas <pault@gcc.gnu.org> Backport from trunk PR fortran/88117 * gfortran.dg/deferred_character_32.f90 : New test git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-8-branch@269160 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/resolve.c3
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/deferred_character_32.f9013
4 files changed, 29 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 87b2b229c6f..6bafe46d46f 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2019-02-23 Paul Thomas <pault@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/88117
+ * resolve.c (deferred_op_assign): Return if the lhs expression
+ has the pointer attribute.
+
2019-02-22 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/71066
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index f70747a586f..df3ab562f48 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -11011,6 +11011,9 @@ deferred_op_assign (gfc_code **code, gfc_namespace *ns)
if (!gfc_check_dependency ((*code)->expr1, (*code)->expr2, 1))
return false;
+ if (gfc_expr_attr ((*code)->expr1).pointer)
+ return false;
+
tmp_expr = get_temp_from_expr ((*code)->expr1, ns);
tmp_expr->where = (*code)->loc;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ba7ba7496e8..6c4661891e2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2019-02-23 Paul Thomas <pault@gcc.gnu.org>
+
+ Backport from trunk
+ PR fortran/88117
+ * gfortran.dg/deferred_character_32.f90 : New test
+
2019-02-12 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/71066
diff --git a/gcc/testsuite/gfortran.dg/deferred_character_32.f90 b/gcc/testsuite/gfortran.dg/deferred_character_32.f90
new file mode 100644
index 00000000000..3969d97ffc9
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/deferred_character_32.f90
@@ -0,0 +1,13 @@
+! { dg-do run }
+!
+! Test the fix for PR88117.
+!
+! Contributed by Gerhard Steinmetz <gscfq@t-online.de>
+!
+program p
+ character(:), pointer :: z(:)
+ allocate (z, source = ['abcd', 'bcde'])
+ z = (z) ! gimplifier choked here.
+ if (any (z .ne. ['abcd', 'bcde'])) stop 1
+ deallocate (z)
+end