Tobias Burnus wrote:
_3.f90: [...]
"fourteen" is really odd: Depending on the position of that subroutine
in file, I get an error or not. I think one should try to better
understand why that happens.
I found it with the help of Paul. The problem was that I set instead of
re-set the variable at the end of resolve_actual_arglist. Now, it works.
Committed the attached patch as Rev. 184863 after a fresh rebuild and
regtesting.
Tobias
PS: Sorry for the glitches.
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c (Revision 184861)
+++ gcc/fortran/resolve.c (Arbeitskopie)
@@ -1833,7 +1833,7 @@ resolve_actual_arglist (gfc_actual_arglist *arg, p
return FAILURE;
}
}
- assumed_type_expr_allowed = true;
+ assumed_type_expr_allowed = false;
return SUCCESS;
}
Index: gcc/fortran/ChangeLog
===================================================================
--- gcc/fortran/ChangeLog (Revision 184861)
+++ gcc/fortran/ChangeLog (Arbeitskopie)
@@ -1,5 +1,11 @@
2012-03-03 Tobias Burnus <bur...@net-b.de>
+ PR fortran/48820
+ * resolve.c (resolve_actual_arglist): Properly reset
+ assumed_type_expr_allowed.
+
+2012-03-03 Tobias Burnus <bur...@net-b.de>
+
* lang.opt (Wc-binding-type): New flag.
* options.c (gfc_init_options, gfc_handle_option): Handle it.
* invoke.texi (Wc-binding-type): Document it.
Index: gcc/testsuite/ChangeLog
===================================================================
--- gcc/testsuite/ChangeLog (Revision 184861)
+++ gcc/testsuite/ChangeLog (Arbeitskopie)
@@ -1,5 +1,10 @@
2012-03-03 Tobias Burnus <bur...@net-b.de>
+ PR fortran/48820
+ * gfortran.dg/assumed_type_3.f90: Undo previous commit.
+
+2012-03-03 Tobias Burnus <bur...@net-b.de>
+
* gfortran.dg/bind_c_dts_4.f03: Add dg-options -Wc-binding-type.
* gfortran.dg/bind_c_implicit_vars.f03: Ditto.
* gfortran.dg/bind_c_usage_8.f03: Ditto.
Index: gcc/testsuite/gfortran.dg/assumed_type_3.f90
===================================================================
--- gcc/testsuite/gfortran.dg/assumed_type_3.f90 (Revision 184861)
+++ gcc/testsuite/gfortran.dg/assumed_type_3.f90 (Arbeitskopie)
@@ -5,11 +5,6 @@
!
! Test TYPE(*)
-subroutine fourteen(x)
- type(*) :: x
- x = x ! { dg-error "Invalid expression with assumed-type variable" }
-end subroutine fourteen
-
subroutine one(a) ! { dg-error "may not have the ALLOCATABLE, CODIMENSION, POINTER or VALUE attribute" }
type(*), value :: a
end subroutine one
@@ -118,4 +113,7 @@ subroutine thirteen(x, y)
print *, ubound(y, dim=x) ! { dg-error "must be INTEGER" }
end subroutine thirteen
-
+subroutine fourteen(x)
+ type(*) :: x
+ x = x ! { dg-error "Invalid expression with assumed-type variable" }
+end subroutine fourteen