Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29237 Discussions

wrong value access in a user-defined type

under7
Beginner
339 Views
Here is a sample of code that have different outputs depending on the degree of optimisation.
Output :
$ ./compil_sh
$ ./a.out
fin_init_vitesse = 300000.000000000
LumC = 300000.000000000

$ ./compil_sh_bug
$ ./a.out
fin_init_vitesse = 300000.000000000
LumC = 2.00000000000000

Function LumC here points to the imaginary part of Const%CI if it was compiled with "-O0" or "-O1" (thus with "-g"), but gives the expected value with "-O2" or at least "-O1 -ip".

Furthermore, LumC points to the expected value without specifying "kind=8" for the complex CI.

It was tested on several computers, from ifort 9.023 to 9.1.032.
Seems like a bug of the compiler to me.


Sources :

- compile_sh

#!/bin/bash
ifort -module ./ -c -O2 mod_bidon.f90
ifort -module ./ -c -O2 prog_bidon.f90
ifort -module -O2 mod_bidon.o prog_bidon.o


- compile_sh_bug


#!/bin/bash
ifort -module ./ -c -O1 mod_bidon.f90
ifort -module ./ -c -O1 prog_bidon.f90
ifort -module -O1 mod_bidon.o prog_bidon.o


- prog_bidon.f90


program bidon
use constantes
implicit none
real(kind=8) :: lum
call InitialiserConst()
lum = LumC()
print *, 'LumC = ', lum
end program bidon



- mod_bidon.f90


module constantes
implicit none
type t_constantes
real(kind=8) :: Pi
real(kind=8) :: Vitesse
complex(kind=8) :: Ci
end type t_constantes
type(t_constantes) :: Const
contains
subroutine InitialiserConst()
Const%Pi = 3.14
Const%Vitesse = 300000
Const%Ci = (0.0, 2.0)
print *, 'fin_init_vitesse = ', Const%Vitesse
end subroutine InitialiserConst
real(kind=8) function LumC()
LumC = Const%Vitesse
end function LumC
end module constantes

Message Edited by under7 on 05-16-200601:42 PM

Message Edited by under7 on 05-16-200601:42 PM

Message Edited by under7 on 05-16-200601:43 PM

Message Edited by under7 on 05-16-200601:47 PM

0 Kudos
1 Reply
Steven_L_Intel1
Employee
339 Views
I agree that it's a bug. Please submit it to Intel Premier Support.
0 Kudos
Reply