OSDN Git Service

2009-05-06 Tobias Burnus <burnus@net-b.de>
authorburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 6 May 2009 15:44:18 +0000 (15:44 +0000)
committerburnus <burnus@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 6 May 2009 15:44:18 +0000 (15:44 +0000)
        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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@147183 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/intrinsic.f90
gcc/testsuite/gfortran.dg/intrinsic_2.f90 [new file with mode: 0644]

index 3e9c86a..1cbfa14 100644 (file)
@@ -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
index fe79e4a..1878042 100644 (file)
@@ -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);
index 880a5d4..7953f67 100644 (file)
@@ -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
index 8bb41fd..e3ac35e 100644 (file)
@@ -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 (file)
index 0000000..b4919a1
--- /dev/null
@@ -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