diff options
author | Jakub Jelinek <jakub@redhat.com> | 2015-01-14 20:22:47 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2015-01-14 20:22:47 +0000 |
commit | 5e7fac847ff08ecef3ccdb50ca839b52e7879ecb (patch) | |
tree | 85f23f2a9bbc1904d3563a6caef6fcc2ef529509 | |
parent | 878eeb4add3d47e60aef5c1072fe76366ac84e21 (diff) |
Backported from mainline
2015-01-13 Jakub Jelinek <jakub@redhat.com>
PR fortran/64528
* trans-decl.c (create_function_arglist): Don't set TREE_READONLY
on dummy args with VALUE attribute.
* gfortran.dg/pr64528.f90: New test.
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@219613 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/fortran/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr64528.f90 | 20 |
4 files changed, 37 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index c0cae2bb64a..3828f1ab1f7 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2015-01-14 Jakub Jelinek <jakub@redhat.com> + + Backported from mainline + 2015-01-13 Jakub Jelinek <jakub@redhat.com> + + PR fortran/64528 + * trans-decl.c (create_function_arglist): Don't set TREE_READONLY + on dummy args with VALUE attribute. + 2015-01-12 Janus Weil <janus@gcc.gnu.org> Backport from mainline diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index 2b0667960f3..4b3e89b7910 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -2262,8 +2262,9 @@ create_function_arglist (gfc_symbol * sym) /* Fill in arg stuff. */ DECL_CONTEXT (parm) = fndecl; DECL_ARG_TYPE (parm) = TREE_VALUE (typelist); - /* All implementation args are read-only. */ - TREE_READONLY (parm) = 1; + /* All implementation args except for VALUE are read-only. */ + if (!f->sym->attr.value) + TREE_READONLY (parm) = 1; if (POINTER_TYPE_P (type) && (!f->sym->attr.proc_pointer && f->sym->attr.flavor != FL_PROCEDURE)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8953f7a5407..e1a61e65c95 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2015-01-14 Jakub Jelinek <jakub@redhat.com> Backported from mainline + 2015-01-13 Jakub Jelinek <jakub@redhat.com> + + PR fortran/64528 + * gfortran.dg/pr64528.f90: New test. + 2015-01-12 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/64563 diff --git a/gcc/testsuite/gfortran.dg/pr64528.f90 b/gcc/testsuite/gfortran.dg/pr64528.f90 new file mode 100644 index 00000000000..f6cca4f73e0 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr64528.f90 @@ -0,0 +1,20 @@ +! PR fortran/64528 +! { dg-do compile } +! { dg-options "-O -fno-tree-dce -fno-tree-ccp" } + +program pr64528 + interface + subroutine foo(x) + integer, value :: x + end subroutine foo + end interface + integer :: x + x = 10 + call foo(x) + if(x .ne. 10) then + endif +end program pr64528 +subroutine foo(x) + integer, value :: x + x = 11 +end subroutine foo |