From 07a202c2bef1393d406b8ad7985918f63b798b5b Mon Sep 17 00:00:00 2001 From: burnus Date: Wed, 6 May 2009 15:44:18 +0000 Subject: [PATCH] 2009-05-06 Tobias Burnus PR fortran/40041 * resolve.c (resolve_symbol): Print no warning for implicitly typed intrinsic functions. 2009-05-06 Tobias Burnus PR fortran/40041 * gfortran.dg/intrinsic_2.f90: New test. * gfortran.dg/intrinsic.f90: Add old and this PR as comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147183 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 +++++ gcc/fortran/resolve.c | 5 ++-- gcc/testsuite/ChangeLog | 6 +++++ gcc/testsuite/gfortran.dg/intrinsic.f90 | 3 +++ gcc/testsuite/gfortran.dg/intrinsic_2.f90 | 40 +++++++++++++++++++++++++++++++ 5 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/intrinsic_2.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 3e9c86ad92b..1cbfa14a550 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2009-05-06 Tobias Burnus + + PR fortran/40041 + * resolve.c (resolve_symbol): Print no warning for implicitly + typed intrinsic functions. + 2009-05-05 Janus Weil PR fortran/39998 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index fe79e4a6703..1878042b458 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -9320,13 +9320,14 @@ resolve_symbol (gfc_symbol *sym) if ((isym = gfc_find_function (sym->name))) { - if (sym->ts.type != BT_UNKNOWN && gfc_option.warn_surprising) + if (sym->ts.type != BT_UNKNOWN && gfc_option.warn_surprising + && !sym->attr.implicit_type) gfc_warning ("Type specified for intrinsic function '%s' at %L is" " ignored", sym->name, &sym->declared_at); } else if ((isym = gfc_find_subroutine (sym->name))) { - if (sym->ts.type != BT_UNKNOWN) + if (sym->ts.type != BT_UNKNOWN && !sym->attr.implicit_type) { gfc_error ("Intrinsic subroutine '%s' at %L shall not have a type" " specifier", sym->name, &sym->declared_at); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 880a5d4d670..7953f6744fb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-05-06 Tobias Burnus + + PR fortran/40041 + * gfortran.dg/intrinsic_2.f90: New test. + * gfortran.dg/intrinsic.f90: Add old and this PR as comment. + 2009-05-06 Joseph Myers PR c/40032 diff --git a/gcc/testsuite/gfortran.dg/intrinsic.f90 b/gcc/testsuite/gfortran.dg/intrinsic.f90 index 8bb41fdfdc4..e3ac35ef52a 100644 --- a/gcc/testsuite/gfortran.dg/intrinsic.f90 +++ b/gcc/testsuite/gfortran.dg/intrinsic.f90 @@ -1,5 +1,8 @@ ! { dg-do compile } ! { dg-options "-c -Wall" } +! +! PR fortran/20373 +! cf. also PR fortran/40041 subroutine valid intrinsic :: abs ! ok, intrinsic function diff --git a/gcc/testsuite/gfortran.dg/intrinsic_2.f90 b/gcc/testsuite/gfortran.dg/intrinsic_2.f90 new file mode 100644 index 00000000000..b4919a13cde --- /dev/null +++ b/gcc/testsuite/gfortran.dg/intrinsic_2.f90 @@ -0,0 +1,40 @@ +! { dg-do compile } +! { dg-options "-c -Wall" } +! +! PR fortran/40041 +! cf. also PR fortran/20373 + +subroutine valid_one + REAL :: a + INTEGER :: n + INTRINSIC ABS, MAX + a(n) = MAX(ABS(2),ABS(3),n) +end subroutine + +subroutine valid_two + IMPLICIT NONE + REAL :: a + INTEGER :: n + INTRINSIC ABS, MAX + a(n) = MAX(ABS(2),ABS(3),n) +end subroutine + +subroutine warnings_one + REAL :: a + INTEGER :: n + REAL :: ABS ! { dg-warning "Type specified for intrinsic function" } + REAL :: MAX ! { dg-warning "Type specified for intrinsic function" } + INTRINSIC ABS, MAX + a(n) = MAX(ABS(2),ABS(3),n) +end subroutine + +subroutine warnings_two + IMPLICIT NONE + REAL :: a + INTEGER :: n + INTRINSIC ABS ! { dg-warning "Type specified for intrinsic function" } + INTRINSIC MAX ! { dg-warning "Type specified for intrinsic function" } + REAL :: ABS + REAL :: MAX + a(n) = MAX(ABS(2),ABS(3),n) +end subroutine -- 2.11.4.GIT