diff options
author | Janus Weil <janus@gcc.gnu.org> | 2009-07-15 10:41:29 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2009-07-15 10:41:29 +0200 |
commit | f6ddbf11c30d0e42e369e7b7f315a66e2e601207 (patch) | |
tree | baaa16eca5288fc980d0a864fb21a98609bd0762 /gcc | |
parent | 76a15894e9b62113a29a6bd5dfa397dfc9cceb72 (diff) | |
download | gcc-f6ddbf11c30d0e42e369e7b7f315a66e2e601207.zip gcc-f6ddbf11c30d0e42e369e7b7f315a66e2e601207.tar.gz gcc-f6ddbf11c30d0e42e369e7b7f315a66e2e601207.tar.bz2 |
re PR fortran/40743 (ICE when compiling iso_varying_string.f95 at revision 149591)
2009-07-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/40743
* resolve.c (resolve_symbol): Don't resolve the formal namespace of a
contained procedure.
2009-07-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/40743
* gfortran.dg/interface_assignment_4.f90: New.
From-SVN: r149662
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/interface_assignment_4.f90 | 35 |
4 files changed, 48 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index aaf2c88..d83acc7 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2009-07-15 Janus Weil <janus@gcc.gnu.org> + + PR fortran/40743 + * resolve.c (resolve_symbol): Don't resolve the formal namespace of a + contained procedure. + 2009-07-14 Taras Glek <tglek@mozilla.com> Rafael Espindola <espindola@google.com> diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 880dfd0..5b4fc2d 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -9842,7 +9842,8 @@ resolve_symbol (gfc_symbol *sym) formal_arg_flag = 0; /* Resolve formal namespaces. */ - if (sym->formal_ns && sym->formal_ns != gfc_current_ns) + if (sym->formal_ns && sym->formal_ns != gfc_current_ns + && !sym->attr.contained) gfc_resolve (sym->formal_ns); /* Make sure the formal namespace is present. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6f30aef..4dc0801 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-07-15 Janus Weil <janus@gcc.gnu.org> + + PR fortran/40743 + * gfortran.dg/interface_assignment_4.f90: New. + 2009-07-15 Gerald Pfeifer <gerald@pfeifer.com> * gcc.dg/builtins-config.h (HAVE_C99_RUNTIME): Do not define diff --git a/gcc/testsuite/gfortran.dg/interface_assignment_4.f90 b/gcc/testsuite/gfortran.dg/interface_assignment_4.f90 new file mode 100644 index 0000000..535e884 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/interface_assignment_4.f90 @@ -0,0 +1,35 @@ +! { dg-do compile } +! +! PR 40743: [4.5 Regression] ICE when compiling iso_varying_string.f95 at revision 149591 +! +! Reduced from http://www.fortran.com/iso_varying_string.f95 +! Contributed by Janus Weil <janus@gcc.gnu.org> + + implicit none + + type :: varying_string + end type + + interface assignment(=) + procedure op_assign_VS_CH + end interface + +contains + + subroutine op_assign_VS_CH (var, exp) + type(varying_string), intent(out) :: var + character(LEN=*), intent(in) :: exp + end subroutine + + subroutine split_VS + type(varying_string) :: string + call split_CH(string) + end subroutine + + subroutine split_CH (string) + type(varying_string) :: string + string = "" + end subroutine + +end + |