Fixes are available
APAR status
Closed as program error.
Error description
The following test case produces an incorrect output with -qhot. ===== Compile Command===== blrts_f90 -O3 -qfixed -qarch=440d -qtune=440 -I /bgl/BlueLight/ppcfloor/bglsys/include -qsource -qlist -qreport=hotlist -c test.f blrts_f90 test.o -O3 -qhot -L/bgl/BlueLight/ppcfloor/bglsys/lib -lmpich.rts -lmsglayer.rts -lrts.rts -ldevices.rts -o test ===== TESTCASE: ====Start of test.f====== program test implicit REAL*8 (A-H,O-Z) PARAMETER(Nmax = 140) PARAMETER(Nsbt = 8) COMPLEX*16 c(NMAX,NMAX) COMPLEX*16 vprd(NMAX,NMAX) REAL*8 TDa(NMAX) c do i=1,NMAX TDa(i) = 1.0d0 - mod(i,2)*2.0d0 enddo do i=1,Nmax do j=1,Nmax vprd(j,i) = DCMPLX(1.0d0,1.0d0) enddo enddo call test_init(c,vprd,TDa,4.0d0,2.0d0,1.0d0,0.5d0,NMAX,Nsbt) do i=1,Nsbt*2 do j=1,Nsbt*2 write(*,*) 'c(',j,',',i,')=',c(j,i) enddo write(*,*) enddo stop end subroutine test_reset(a,N) COMPLEX*16 a(N) integer n,i do i=1,n a(i) = 0.0D0 enddo return end c@PROCESS nohot subroutine test_init(c,vprd,TDa,Rm0,Rm,p0,u0,NMAX,Nsbt) COMPLEX*16 c(NMAX,NMAX) COMPLEX*16 vprd(NMAX,NMAX) COMPLEX*16 w(NMAX,NMAX) REAL*8 TDa(NMAX),Rm0,Rm,p0,u0 integer NMAX,Nsbt,i,j,k c call test_reset(c,Nmax*Nmax) c do i=1,2*Nsbt c(i,i) = -u0 enddo c do i=1,Nsbt c(i,i+Nsbt)=(Rm0-0.5D0*Rm)*DSIGN(1.D0,TDa(i)) - p0*TDa(i) enddo c do i = 1, Nsbt do j = Nsbt+1, 2*Nsbt c(i,j) = c(i,j) + u0*vprd(i,j) enddo enddo c return end ========End of test.f============ ===== ACTUAL OUTPUT: . . stdout[0]: c( 1 , 9 )= (4.50000000000000000,0.500000000000000000) <--Notice the 4.5 stdout[0]: c( 2 , 9 )= (0.500000000000000000,0.500000000000000000) . . stdout[0]: c( 1 , 11 )= (0.500000000000000000,0.500000000000000000) stdout[0]: c( 2 , 11 )= (0.500000000000000000,0.500000000000000000) stdout[0]: c( 3 , 11 )= (4.50000000000000000,0.500000000000000000) <--Notice the 4.5 stdout[0]: c( 4 , 11 )= (0.500000000000000000,0.500000000000000000) . . stdout[0]: c( 5 , 13 )= (4.50000000000000000,0.500000000000000000) <--Notice the 4.5 . . stdout[0]: c( 6 , 15 )= (0.500000000000000000,0.500000000000000000) stdout[0]: c( 7 , 15 )= (4.50000000000000000,0.500000000000000000) <--Notice the 4.5 . ===== EXPECTED OUTPUT: . . stdout[0]: c( 1 , 9 )= (-1.50000000000000000,0.500000000000000000) <--Should be -1.5 stdout[0]: c( 2 , 9 )= (0.500000000000000000,0.500000000000000000) . . stdout[0]: c( 1 , 11 )= (0.500000000000000000,0.500000000000000000) stdout[0]: c( 2 , 11 )= (0.500000000000000000,0.500000000000000000) stdout[0]: c( 3 , 11 )= (-1.50000000000000000,0.500000000000000000) <--Should be -1.5 stdout[0]: c( 4 , 11 )= (0.500000000000000000,0.500000000000000000) . . stdout[0]: c( 5 , 13 )= (-1.50000000000000000,0.500000000000000000) <--Should be -1.5 . . stdout[0]: c( 6 , 15 )= (0.500000000000000000,0.500000000000000000) stdout[0]: c( 7 , 15 )= (-1.50000000000000000,0.500000000000000000) <--Should be -1.5
Local fix
n/a
Problem summary
Users with 440d or 450d (using the double hummer unit) maybe affected by this issue. There is a transformation where the compiler replaces pattern USEL with float compares with WFSEL where: WFSEL a, b, c represents a>=0 ? b:c
Problem conclusion
The compiler has been fixed to substitute the correct trasnformation pattern.
Temporary fix
Comments
APAR Information
APAR number
LI74216
Reported component name
XL FORTRAN AE B
Reported component ID
5799HJG00
Reported release
B10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2009-02-25
Closed date
2009-04-28
Last modified date
2009-04-28
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fix information
Fixed component name
XL FORTRAN AE B
Fixed component ID
5799HJG00
Applicable component levels
RB10 PSY
UP
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSB259","label":"XL Fortran Advanced Edition for Linux"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"B.1","Line of Business":{"code":"LOB57","label":"Power"}}]
Document Information
Modified date:
24 February 2022