+2010-02-03 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/42936
+ * interface.c (compare_parameter): Disable rank-checking
+ for NULL().
+
2010-02-02 Tobias Burnus <burnus@net-b.de>
PR fortran/42650
rank_check = where != NULL && !is_elemental && formal->as
&& (formal->as->type == AS_ASSUMED_SHAPE
- || formal->as->type == AS_DEFERRED);
+ || formal->as->type == AS_DEFERRED)
+ && actual->expr_type != EXPR_NULL;
- if (rank_check || ranks_must_agree || formal->attr.pointer
+ if (rank_check || ranks_must_agree
+ || (formal->attr.pointer && actual->expr_type != EXPR_NULL)
|| (actual->rank != 0 && !(is_elemental || formal->attr.dimension))
|| (actual->rank == 0 && formal->as->type == AS_ASSUMED_SHAPE))
{
else
return 1;
}
- else if (ref == NULL)
+ else if (ref == NULL && actual->expr_type != EXPR_NULL)
{
if (where)
gfc_error ("Rank mismatch in argument '%s' at %L (%d and %d)",
--- /dev/null
+! { dg-do run }
+!
+! PR fortran/42936
+!
+! Contributed by Mat Cross
+!
+PROGRAM PASSES_NULL
+ CALL SUB(NULL())
+CONTAINS
+ SUBROUTINE SUB(I)
+ INTEGER, POINTER :: I(:,:,:)
+ IF (ASSOCIATED (I)) CALL ABORT ()
+ END SUBROUTINE SUB
+END PROGRAM PASSES_NULL