http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54199

             Bug #: 54199
           Summary: Superfluous diagnostic "is also the name of an
                    intrinsic" for internal procedures
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Keywords: diagnostic
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: bur...@gcc.gnu.org


Compiling the following program with -Wall gives the message:

  function fraction(x)
  1
Warning: 'fraction' declared at (1) is also the name of an intrinsic.  It can
only be called via an explicit interface or if declared EXTERNAL.

I believe this message should not be printed for internal procedures.

(For module procedures, there is a different warning, which can stay:
"'fraction' declared at (1) may shadow the intrinsic of the same name.  In
order to call the intrinsic, explicit INTRINSIC declarations may be required.")


subroutine test()
contains
  function fraction(x)
    real :: x
  end function fraction
end subroutine test


Untested patch:

--- a/gcc/fortran/intrinsic.c
+++ b/gcc/fortran/intrinsic.c
@@ -4510,3 +4518,3 @@ gfc_warn_intrinsic_shadow (const gfc_symbol* sym, bool
in_module, bool func)
                 sym->name, &sym->declared_at);
-  else
+  else if (!sym->ns->proc_name)
     gfc_warning ("'%s' declared at %L is also the name of an intrinsic.  It
can"

Reply via email to