diff options
author | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2019-02-23 14:59:50 +0000 |
---|---|---|
committer | pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4> | 2019-02-23 14:59:50 +0000 |
commit | 2005ea3f97a9bb3bdbbe7153fe2c038a555ba0d8 (patch) | |
tree | 56c5c5d7ca868d52b0a2ebfe6257d8b315847d61 | |
parent | 7690c3395facc401f7b6b675ac6964f5fbce3df4 (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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/deferred_character_32.f90 | 13 |
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 |