This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/61180] New: surprising -Wsurprising warning


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61180

            Bug ID: 61180
           Summary: surprising -Wsurprising warning
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: Joost.VandeVondele at mat dot ethz.ch

To my surprise, -Wsurprising produces surprising warnings. The issue is the
following:

MODULE M1
 TYPE foo_type
   INTEGER, POINTER, DIMENSION(:) :: data
 END TYPE
CONTAINS
  FUNCTION get_data(foo) RESULT(res)
    TYPE(foo_type) :: foo
    INTEGER, POINTER, DIMENSION(:) :: res
    res=>foo%data
  END FUNCTION
END MODULE M1

  USE M1
  TYPE(foo_type) :: foo
  INTEGER, DIMENSION(:), ALLOCATABLE :: data1
  INTEGER, DIMENSION(:), POINTER :: data2
  INTEGER, DIMENSION(:), POINTER :: data3
  ALLOCATE(data1(10))
  ALLOCATE(data2(10))
  ALLOCATE(foo%data(10))
  ! no warning needed...pointer assignment not possible
  data1=get_data(foo)
  ! no warning needed...pointer assignment not intended 
  data2(:)=get_data(foo) 
  ! warning possible, but not documented on 
  ! gfortran/Error-and-Warning-Options.html#Error-and-Warning-Options
  data3=get_data(foo)
END PROGRAM

warnings for the first two cases are presumably not needed, the 3rd case is not
documented

bug.f90:22.8:

  data1=get_data(foo)
        1
Warning: POINTER-valued function appears on right-hand side of assignment at
(1)

The option has been added quite a while ago:

http://gcc.gnu.org/ml/fortran/2004-08/msg00220.html

maybe it should just be a bit restricted


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]