From: janus Date: Mon, 3 Feb 2014 08:16:06 +0000 (+0000) Subject: 2014-02-03 Janus Weil X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=c78cff598256991c5f1db30a4b9b03ecc68d0aaf;hp=0403b578dbcecdeda51627abfaccfb504fb2b58c;p=pf3gnuchains%2Fgcc-fork.git 2014-02-03 Janus Weil PR fortran/59941 * expr.c (replace_comp): Check for isym to avoid ICE. 2014-02-03 Janus Weil PR fortran/59941 * gfortran.dg/typebound_proc_26.f90: New. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_7-branch@207417 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index e3988a0ae45..b3168179085 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,8 @@ +2014-02-03 Janus Weil + + PR fortran/59941 + * expr.c (replace_comp): Check for isym to avoid ICE. + 2014-01-27 Mikael Morin PR fortran/58007 diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c index 194deb6fb2b..c0cc6886a52 100644 --- a/gcc/fortran/expr.c +++ b/gcc/fortran/expr.c @@ -4195,7 +4195,7 @@ replace_comp (gfc_expr *expr, gfc_symbol *sym, int *i ATTRIBUTE_UNUSED) gfc_component *comp; comp = (gfc_component *)sym; if ((expr->expr_type == EXPR_VARIABLE - || (expr->expr_type == EXPR_FUNCTION + || (expr->expr_type == EXPR_FUNCTION && !expr->value.function.isym && !gfc_is_intrinsic (expr->symtree->n.sym, 0, expr->where))) && expr->symtree->n.sym->ns == comp->ts.interface->formal_ns) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 152554dcfcd..8ede531afba 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-02-03 Janus Weil + + PR fortran/59941 + * gfortran.dg/typebound_proc_26.f90: New. + 2014-01-29 Markus Trippelsdorf Backport from mainline diff --git a/gcc/testsuite/gfortran.dg/typebound_proc_26.f90 b/gcc/testsuite/gfortran.dg/typebound_proc_26.f90 new file mode 100644 index 00000000000..ec2e0e84285 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/typebound_proc_26.f90 @@ -0,0 +1,38 @@ +! { dg-do compile } +! +! PR 59941: [4.7 Regression] [OOP] ICE with polymorphic types +! +! Contributed by Jürgen Reuter + +module tao_random_numbers + integer, dimension(10), private :: s_buffer + integer, private :: s_buffer_end = size (s_buffer) +end module + + +module beam_structures + + private + + type :: beam_structure_t + integer, dimension(:), allocatable :: smatrix + contains + procedure :: get_smatrix + end type + +contains + + function get_smatrix (beam_structure) result (matrix) + class(beam_structure_t), intent(in) :: beam_structure + integer, dimension (size (beam_structure%smatrix)) :: matrix + end function + +end module + + +program p + use tao_random_numbers + use beam_structures +end + +! { dg-final { cleanup-modules "tao_random_numbers beam_structures" } }