+2013-02-04 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/54107
+ PR fortran/54195
+ * gfortran.h (struct gfc_symbol): New field 'resolved'.
+ * resolve.c (resolve_fl_var_and_proc): Don't skip result symbols.
+ (resolve_symbol): Skip duplicate calls. Don't check the current
+ namespace.
+
2013-02-02 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/50627
* parse.c (parse_module): Do not put namespace into
gsymbol on error.
-2012-01-30 Tobias Burnus <burnus@net-b.de>
+2013-01-30 Tobias Burnus <burnus@net-b.de>
PR fortran/56138
* trans-decl.c (gfc_trans_deferred_vars): Fix deferred-length
finalizer_insert_packed_call, generate_finalization_wrapper):
Clean up by using gfc_build_intrinsic_call.
-2012-01-07 Tobias Burnus <burnus@net-b.de>
+2013-01-07 Tobias Burnus <burnus@net-b.de>
PR fortran/55763
* resolve.c (resolve_select_type): Reject intrinsic types for
unsigned equiv_built:1;
/* Set if this variable is used as an index name in a FORALL. */
unsigned forall_index:1;
+ /* Used to avoid multiple resolutions of a single symbol. */
+ unsigned resolved:1;
+
int refs;
struct gfc_namespace *ns; /* namespace containing this symbol */
{
gfc_array_spec *as;
- /* Avoid double diagnostics for function result symbols. */
- if ((sym->result || sym->attr.result) && !sym->attr.dummy
- && (sym->ns != gfc_current_ns))
- return SUCCESS;
-
if (sym->ts.type == BT_CLASS && sym->attr.class_ok)
as = CLASS_DATA (sym)->as;
else
gfc_array_spec *as;
bool saved_specification_expr;
+ if (sym->resolved)
+ return;
+ sym->resolved = 1;
+
if (sym->attr.artificial)
return;
described in 14.7.5, to those variables that have not already
been assigned one. */
if (sym->ts.type == BT_DERIVED
- && sym->ns == gfc_current_ns
&& !sym->value
&& !sym->attr.allocatable
&& !sym->attr.alloc_comp)
+2013-02-04 Mikael Morin <mikael@gcc.gnu.org>
+
+ PR fortran/54107
+ * gfortran.dg/recursive_interface_1.f90: New test.
+
2013-02-04 Richard Guenther <rguenther@suse.de>
PR lto/56168
* lib/target-supports-dg.exp (dg-process-target): Use expr to
evaluate the end index in string range.
-2012-01-30 Tobias Burnus <burnus@net-b.de>
+2013-01-30 Tobias Burnus <burnus@net-b.de>
PR fortran/56138
* gfortran.dg/allocatable_function_6.f90: New.
--- /dev/null
+! { dg-do compile }
+!
+! PR fortran/54107
+! The compiler used to ICE on recursive interfaces.
+
+module m
+ contains
+ function foo() result(r1)
+ procedure(foo), pointer :: r1
+ end function foo
+
+ function bar() result(r2)
+ procedure(baz), pointer :: r2
+ end function bar
+
+ function baz() result(r3)
+ procedure(bar), pointer :: r3
+ end function baz
+end module m
+