diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2006-02-13 22:31:18 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2006-02-13 22:31:18 +0100 |
commit | a7d6b7655606e2107da942ad0cc1df10ac4ead20 (patch) | |
tree | a794ae1237b5805a753aa941e0560320e6deceec /gcc | |
parent | 6f538523d1e363cb51f08b52e31062304352e543 (diff) | |
download | gcc-a7d6b7655606e2107da942ad0cc1df10ac4ead20.zip gcc-a7d6b7655606e2107da942ad0cc1df10ac4ead20.tar.gz gcc-a7d6b7655606e2107da942ad0cc1df10ac4ead20.tar.bz2 |
re PR fortran/26246 (return string length is being marked as TREE_STATIC and TREE_PUBLIC)
2006-02-13 Andrew Pinski <pinskia@physics.uc.edu>
Jakub Jelinek <jakub@redhat.com>
PR fortran/26246
* trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use
gfc_add_decl_to_function rather than gfc_finish_var_decl on length.
* gfortran.dg/pr26246_1.f90: New test.
* gfortran.dg/pr26246_2.f90: New test.
From-SVN: r110929
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/trans-decl.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr26246_1.f90 | 18 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/pr26246_2.f90 | 13 |
5 files changed, 44 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 619dd27..d4a2720 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,10 @@ +2006-02-13 Andrew Pinski <pinskia@physics.uc.edu> + Jakub Jelinek <jakub@redhat.com> + + PR fortran/26246 + * trans-decl.c (gfc_get_symbol_decl, gfc_get_fake_result_decl): Use + gfc_add_decl_to_function rather than gfc_finish_var_decl on length. + 2006-02-13 Paul Thomas <pault@gcc.gnu.org> PR fortran/26074 diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c index d1892b7..3d43c66 100644 --- a/gcc/fortran/trans-decl.c +++ b/gcc/fortran/trans-decl.c @@ -873,7 +873,7 @@ gfc_get_symbol_decl (gfc_symbol * sym) if (TREE_CODE (length) == VAR_DECL && DECL_CONTEXT (length) == NULL_TREE) { - gfc_finish_var_decl (length, sym); + gfc_add_decl_to_function (length); gfc_defer_symbol_init (sym); } } @@ -1779,7 +1779,7 @@ gfc_get_fake_result_decl (gfc_symbol * sym) length = sym->ts.cl->backend_decl; if (TREE_CODE (length) == VAR_DECL && DECL_CONTEXT (length) == NULL_TREE) - gfc_finish_var_decl (length, sym); + gfc_add_decl_to_function (length); } if (gfc_return_by_reference (sym)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1f2fdb7..9cfac85 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,9 @@ 2006-02-13 Jakub Jelinek <jakub@redhat.com> + PR fortran/26246 + * gfortran.dg/pr26246_1.f90: New test. + * gfortran.dg/pr26246_2.f90: New test. + PR middle-end/26092 * gcc.c-torture/compile/20060208-1.c: New test. diff --git a/gcc/testsuite/gfortran.dg/pr26246_1.f90 b/gcc/testsuite/gfortran.dg/pr26246_1.f90 new file mode 100644 index 0000000..a1cb455 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr26246_1.f90 @@ -0,0 +1,18 @@ +! PR fortran/26246 +! { dg-options "-fdump-tree-original" } +! { dg-do compile } + +module pr26246_1 + implicit none + contains + function foo(string) + character(*), intent(in) :: string + character(len=len(string)+2) :: foo + if (index(trim(string), '"').ne.0) then + foo = "'" // trim(string) // "'" + end if + end function foo +end module pr26246_1 + +! { dg-final { scan-tree-dump-times "static int" 0 "original" } } +! { dg-final { cleanup-tree-dump "original" } } diff --git a/gcc/testsuite/gfortran.dg/pr26246_2.f90 b/gcc/testsuite/gfortran.dg/pr26246_2.f90 new file mode 100644 index 0000000..440e868 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr26246_2.f90 @@ -0,0 +1,13 @@ +! PR fortran/26246 +! { dg-options "-fdump-tree-original -fno-automatic" } +! { dg-do compile } + +subroutine foo(string, n) + implicit none + integer :: n + character(len=n + 6), intent(in) :: string + if (string .eq. 'abc') call abort +end subroutine foo + +! { dg-final { scan-tree-dump-times "static int" 0 "original" } } +! { dg-final { cleanup-tree-dump "original" } } |