diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 90337d27327..734b4936748 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-12-12 Janus Weil + + PR fortran/46809 + * resolve.c (resolve_select_type): Set the location of the first + argument when generating the EXTENDS_TYPE_OF call. + 2010-12-11 Jerry DeLisle PR fortran/46705 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index ab49e93f8fe..a27fe2d11b5 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -7893,6 +7893,7 @@ resolve_select_type (gfc_code *code, gfc_namespace *old_ns) /* Set up arguments. */ new_st->expr1->value.function.actual = gfc_get_actual_arglist (); new_st->expr1->value.function.actual->expr = gfc_get_variable_expr (code->expr1->symtree); + new_st->expr1->value.function.actual->expr->where = code->loc; gfc_add_vptr_component (new_st->expr1->value.function.actual->expr); vtab = gfc_find_derived_vtab (body->ext.case_list->ts.u.derived); st = gfc_find_symtree (vtab->ns->sym_root, vtab->name); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ee46df3fd4a..5cf2c03fdee 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-12-12 Janus Weil + + PR fortran/46809 + * gfortran.dg/pointer_check_8.f90: New. + 2010-12-11 Jerry DeLisle PR fortran/46705 diff --git a/gcc/testsuite/gfortran.dg/pointer_check_8.f90 b/gcc/testsuite/gfortran.dg/pointer_check_8.f90 new file mode 100644 index 00000000000..b47aa972677 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pointer_check_8.f90 @@ -0,0 +1,21 @@ +! { dg-do compile} +! { dg-options "-fcheck=pointer" } +! +! PR 46809: [OOP] ICE with -fcheck=pointer for CLASS IS +! +! Contributed by Salvatore Filippone + + type t + end type t + +contains + + subroutine sub(a) + class(t) :: a + select type (a) + class is (t) + print *, 'Hi there' + end select + end subroutine + +end