diff options
author | Tobias Burnus <burnus@net-b.de> | 2008-01-06 10:18:43 +0100 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2008-01-06 10:18:43 +0100 |
commit | 242633d6eabe8e1a4f1a339c38e6e6a6f4ceb67e (patch) | |
tree | 3f845286fdbf3278365bb6145fc3082661526e41 | |
parent | a5c655e832e56b78b5cc4cab0452f4263740e938 (diff) | |
download | gcc-242633d6eabe8e1a4f1a339c38e6e6a6f4ceb67e.zip gcc-242633d6eabe8e1a4f1a339c38e6e6a6f4ceb67e.tar.gz gcc-242633d6eabe8e1a4f1a339c38e6e6a6f4ceb67e.tar.bz2 |
re PR fortran/34660 (elemental and dummy procedure)
2008-01-06 Tobias Burnus <burnus@net-b.de>
PR fortran/34660
* resolve.c (resolve_formal_arglist): Reject dummy procedure in
ELEMENTAL functions.
2008-01-06 Tobias Burnus <burnus@net-b.de>
PR fortran/34660
* gfortran.dg/elemental_args_check_2.f90: New.
From-SVN: r131349
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 8 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/elemental_args_check_2.f90 | 19 |
4 files changed, 38 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 43d7519..950a0ee 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2008-01-06 Tobias Burnus <burnus@net-b.de> + PR fortran/34660 + * resolve.c (resolve_formal_arglist): Reject dummy procedure in + ELEMENTAL functions. + +2008-01-06 Tobias Burnus <burnus@net-b.de> + PR fortran/34662 * interface.c (compare_actual_formal): Reject parameter actual to intent(out) dummy. diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 8fc679d..e4f7dcb 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -225,6 +225,14 @@ resolve_formal_arglist (gfc_symbol *proc) &sym->declared_at); continue; } + + if (sym->attr.flavor == FL_PROCEDURE) + { + gfc_error ("Dummy procedure '%s' not allowed in elemental " + "procedure '%s' at %L", sym->name, proc->name, + &sym->declared_at); + continue; + } } /* Each dummy shall be specified to be scalar. */ diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5cecf06..5036598 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2008-01-06 Tobias Burnus <burnus@net-b.de> + PR fortran/34660 + * gfortran.dg/elemental_args_check_2.f90: New. + +2008-01-06 Tobias Burnus <burnus@net-b.de> + PR fortran/34662 * gfortran.dg/intent_out_3.f90: New. diff --git a/gcc/testsuite/gfortran.dg/elemental_args_check_2.f90 b/gcc/testsuite/gfortran.dg/elemental_args_check_2.f90 new file mode 100644 index 0000000..51e69a4 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/elemental_args_check_2.f90 @@ -0,0 +1,19 @@ +! { dg-do compile } +! +! PR fortran/34660 +! +! Check for elemental constrain C1277 (F2003). +! Contributed by Joost VandeVondele. +! +MODULE M1 +IMPLICIT NONE +CONTAINS + PURE ELEMENTAL SUBROUTINE S1(I,F) + INTEGER, INTENT(IN) :: I + INTERFACE + PURE INTEGER FUNCTION F(I) ! { dg-error "Dummy procedure 'f' not allowed in elemental procedure" } + INTEGER, INTENT(IN) :: I + END FUNCTION F + END INTERFACE + END SUBROUTINE S1 +END MODULE M1 |