diff options
author | Tobias Burnus <burnus@net-b.de> | 2009-05-06 17:44:18 +0200 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2009-05-06 17:44:18 +0200 |
commit | b050b2dec68289dc363907df52e0b558f5443251 (patch) | |
tree | 4a987a2be2a59e5ddaa4159669ce452ba4b6e923 /gcc | |
parent | 1f11033528b5b35ecc84eb4afa53c64509eb542c (diff) | |
download | gcc-b050b2dec68289dc363907df52e0b558f5443251.zip gcc-b050b2dec68289dc363907df52e0b558f5443251.tar.gz gcc-b050b2dec68289dc363907df52e0b558f5443251.tar.bz2 |
re PR fortran/40041 (spurious warning with INTRINSIC statement)
2009-05-06 Tobias Burnus <burnus@net-b.de>
PR fortran/40041
* resolve.c (resolve_symbol): Print no warning for implicitly
typed intrinsic functions.
2009-05-06 Tobias Burnus <burnus@net-b.de>
PR fortran/40041
* gfortran.dg/intrinsic_2.f90: New test.
* gfortran.dg/intrinsic.f90: Add old and this PR as comment.
From-SVN: r147183
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/resolve.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/intrinsic.f90 | 3 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/intrinsic_2.f90 | 40 |
5 files changed, 58 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 3e9c86a..1cbfa14 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2009-05-06 Tobias Burnus <burnus@net-b.de> + + PR fortran/40041 + * resolve.c (resolve_symbol): Print no warning for implicitly + typed intrinsic functions. + 2009-05-05 Janus Weil <janus@gcc.gnu.org> PR fortran/39998 diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index fe79e4a..1878042 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 880a5d4..7953f67 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2009-05-06 Tobias Burnus <burnus@net-b.de> + + 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 <joseph@codesourcery.com> PR c/40032 diff --git a/gcc/testsuite/gfortran.dg/intrinsic.f90 b/gcc/testsuite/gfortran.dg/intrinsic.f90 index 8bb41fd..e3ac35e 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 0000000..b4919a1 --- /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 |