Adapted from a test case from c.l.f, from James van Buskirk
:
$ cat foo.f90 
program main
   integer, parameter :: ipi = 1078530011
   real pi
   parameter(pi=transfer(ipi,pi))
   real, parameter :: z = transfer(ipi,z)
   real, parameter :: y = real(1,kind(y))

   write(*,*) pi, z, y
end
$ gfortran -std=f95 -pedantic foo.f90 
$ ./a.out
   3.1415927       3.1415927      1.00000000 

JvB's explanation:

# the second
# and third treat transfer as a specification inquiry even thought
# that is not permitted even in f03, and the fourth has that pesky
# REAL intrinsic, which is not an elemental function of type integer
# or character.

gfortran 4.2 still generates some error messages:

$ gfortran-4.2 foo.f90 
foo.f90:4.29:

   parameter(pi=transfer(ipi,pi))
                            1
Error: Parameter 'pi' at (1) has not been declared or is a variable, which does
not reduce to a constant expression
foo.f90:5.35:

   real, parameter :: z = transfer(ipi,z)
                                  1
Error: TRANSFER intrinsic not implemented for initialization at (1)


-- 
           Summary: [4.3 Regression] accepts invalid initialization
                    expressions with -std=f95
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Keywords: accepts-invalid, diagnostic
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: tkoenig at gcc dot gnu dot org


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

Reply via email to