From: Jakub Jelinek Date: Sun, 1 Feb 2015 21:51:40 +0000 (+0100) Subject: backport: re PR fortran/64528 (ICE: in process_constraint, at tree-ssa-structalias... X-Git-Tag: releases/gcc-4.8.5~295 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e7f213f9c6ff759420e513695917cb787fd9f2d;p=thirdparty%2Fgcc.git backport: re PR fortran/64528 (ICE: in process_constraint, at tree-ssa-structalias.c:3002 with -O -fno-tree-ccp -fno-tree-dce) Backported from mainline 2015-01-13 Jakub Jelinek 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. From-SVN: r220333 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 93db3380c7d8..81c4c1d860e4 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2015-02-01 Jakub Jelinek + + Backported from mainline + 2015-01-13 Jakub Jelinek + + PR fortran/64528 + * trans-decl.c (create_function_arglist): Don't set TREE_READONLY + on dummy args with VALUE attribute. + 2015-01-24 Thomas Koenig PR fortran/56867 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index b4b0fc536b01..b473d660e736 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -2186,8 +2186,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 909c125d9623..0287bccee613 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2015-02-01 Jakub Jelinek Backported from mainline + 2015-01-13 Jakub Jelinek + + PR fortran/64528 + * gfortran.dg/pr64528.f90: New test. + 2015-01-12 Jakub Jelinek 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 000000000000..f6cca4f73e00 --- /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