+2014-02-19 Janus Weil <janus@gcc.gnu.org>
+
+ Backports from mainline:
+ 2014-02-17 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/55907
+ * resolve.c (build_default_init_expr): Don't initialize character
+ variable if -fno-automatic is given.
+
+ 2014-02-18 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/60231
+ * resolve.c (check_generic_tbp_ambiguity): Check for presence of dummy
+ arguments to prevent ICE.
+
2014-02-09 Janus Weil <janus@gcc.gnu.org>
Backport from mainline
init_expr = NULL;
}
if (!init_expr && gfc_option.flag_init_character == GFC_INIT_CHARACTER_ON
- && sym->ts.u.cl->length)
+ && sym->ts.u.cl->length && gfc_option.flag_max_stack_var_size != 0)
{
gfc_actual_arglist *arg;
init_expr = gfc_get_expr ();
{
gfc_symbol *sym1, *sym2;
const char *pass1, *pass2;
+ gfc_formal_arglist *dummy_args;
gcc_assert (t1->specific && t2->specific);
gcc_assert (!t1->specific->is_generic);
return FAILURE;
}
- /* Compare the interfaces. */
+ /* Determine PASS arguments. */
if (t1->specific->nopass)
pass1 = NULL;
else if (t1->specific->pass_arg)
pass1 = t1->specific->pass_arg;
else
- pass1 = gfc_sym_get_dummy_args (t1->specific->u.specific->n.sym)->sym->name;
+ {
+ dummy_args = gfc_sym_get_dummy_args (t1->specific->u.specific->n.sym);
+ if (dummy_args)
+ pass1 = dummy_args->sym->name;
+ else
+ pass1 = NULL;
+ }
if (t2->specific->nopass)
pass2 = NULL;
else if (t2->specific->pass_arg)
pass2 = t2->specific->pass_arg;
else
- pass2 = gfc_sym_get_dummy_args (t2->specific->u.specific->n.sym)->sym->name;
+ {
+ dummy_args = gfc_sym_get_dummy_args (t2->specific->u.specific->n.sym);
+ if (dummy_args)
+ pass2 = dummy_args->sym->name;
+ else
+ pass2 = NULL;
+ }
+
+ /* Compare the interfaces. */
if (gfc_compare_interfaces (sym1, sym2, sym2->name, !t1->is_operator, 0,
NULL, 0, pass1, pass2))
{
+2014-02-19 Janus Weil <janus@gcc.gnu.org>
+
+ Backports from mainline:
+ 2014-02-17 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/55907
+ * gfortran.dg/init_flag_12.f90: New.
+
+ 2014-02-18 Janus Weil <janus@gcc.gnu.org>
+
+ PR fortran/60231
+ * gfortran.dg/typebound_generic_15.f90: New.
+
2014-02-18 Kai Tietz <ktietz@redhat.com>
PR target/60193
--- /dev/null
+! { dg-do compile }
+! { dg-options "-fno-automatic -finit-local-zero" }
+!
+! PR 55907: [4.7/4.8/4.9 Regression] ICE with -fno-automatic -finit-local-zero
+!
+! Contributed by J.R. Garcia <garcia.espinosa.jr@gmail.com>
+
+subroutine cchaine (i)
+ implicit none
+ integer :: i
+ character(len=i) :: chaine
+ write(*,*) chaine
+end subroutine
--- /dev/null
+! { dg-do compile }
+!
+! PR 60231: [4.8/4.9 Regression] ICE on undefined generic
+!
+! Contributed by Antony Lewis <antony@cosmologist.info>
+
+module Objects
+
+ Type TObjectList
+ contains
+ procedure :: Add1 ! { dg-error "must be a module procedure" }
+ procedure :: Add2 ! { dg-error "must be a module procedure" }
+ generic :: Add => Add1, Add2 ! { dg-error "are ambiguous" }
+ end Type
+
+end module
+
+! { dg-final { cleanup-modules "Objects" } }