diff options
author | Janus Weil <janus@gcc.gnu.org> | 2008-06-08 13:55:41 +0200 |
---|---|---|
committer | Janus Weil <janus@gcc.gnu.org> | 2008-06-08 13:55:41 +0200 |
commit | c1db9545dd92301f1ed321287b2363cf7d375fa3 (patch) | |
tree | 173371c70f3cd7f0252eda565f2d2a3e8cb6a5db /gcc | |
parent | 2d9bbb6b6d1762039c0436b8ed42a3c29ce4c7d2 (diff) | |
download | gcc-c1db9545dd92301f1ed321287b2363cf7d375fa3.zip gcc-c1db9545dd92301f1ed321287b2363cf7d375fa3.tar.gz gcc-c1db9545dd92301f1ed321287b2363cf7d375fa3.tar.bz2 |
re PR fortran/36459 (Wrong interface use for PROCEDURE)
2008-06-08 Janus Weil <janus@gcc.gnu.org>
PR fortran/36459
* decl.c (match_procedure_decl): Correctly recognize if the interface
is an intrinsic procedure.
2008-06-08 Janus Weil <janus@gcc.gnu.org>
PR fortran/36459
* gfortran.dg/proc_decl_16.f90: New.
From-SVN: r136555
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/decl.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/proc_decl_16.f90 | 21 |
4 files changed, 36 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 9c95069..205fc19 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2008-06-08 Janus Weil <janus@gcc.gnu.org> + + PR fortran/36459 + * decl.c (match_procedure_decl): Correctly recognize if the interface + is an intrinsic procedure. + 2008-06-08 Tobias Burnus <burnus@net-b.de> PR fortran/35830 diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index ea87c21..c4ef7e7 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -4085,8 +4085,10 @@ match_procedure_decl (void) return MATCH_ERROR; } /* Handle intrinsic procedures. */ - if (gfc_intrinsic_name (proc_if->name, 0) - || gfc_intrinsic_name (proc_if->name, 1)) + if (!(proc_if->attr.external || proc_if->attr.use_assoc + || proc_if->attr.if_source == IFSRC_IFBODY) + && (gfc_intrinsic_name (proc_if->name, 0) + || gfc_intrinsic_name (proc_if->name, 1))) proc_if->attr.intrinsic = 1; if (proc_if->attr.intrinsic && !gfc_intrinsic_actual_ok (proc_if->name, 0)) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d6a0c03..84ee84c 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-06-08 Janus Weil <janus@gcc.gnu.org> + + PR fortran/36459 + * gfortran.dg/proc_decl_16.f90: New. + 2008-06-08 Tobias Burnus <burnus@net-b.de> PR fortran/35830 diff --git a/gcc/testsuite/gfortran.dg/proc_decl_16.f90 b/gcc/testsuite/gfortran.dg/proc_decl_16.f90 new file mode 100644 index 0000000..3251e52 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/proc_decl_16.f90 @@ -0,0 +1,21 @@ +! { dg-do compile } +! PR fortran/36459 +! +abstract interface + function dim() + integer :: dim + end function dim +end interface +procedure(dim) :: f + +interface + integer function tan() + end function +end interface +procedure(tan) :: g + +print *, f() + +print *, tan() + +end |