Fixes are available
APAR status
Closed as program error.
Error description
When compiling code similar to the snippet below at -O3, instruction ordering can cause the multiplication operation to execute in cases where 'foo(i) != bar'. The 'a' variable is not set, as the execution is a result of reordering. Sometimes this behaviour is undesired, and may cause problems. if (foo(i) == bar) then a = 0. else a = foo(i) * b endif
Local fix
N/A
Problem summary
USERS AFFECTED: Users with -O3 and higher. PROBLEM DESCRIPTION: Internal code reordering allows for the multiply to be executed. The -qstrict=guards compiler option should avoid this reordering, but is failing in this case.
Problem conclusion
The compiler is performing speculation on a multiply and reordering it. The behaviour of the -qstrict=guards option has been corrected to avoid this reordering.
Temporary fix
Comments
APAR Information
APAR number
LI75304
Reported component name
XL FORTRAN SLES
Reported component ID
5724U8400
Reported release
C10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2010-04-27
Closed date
2010-04-27
Last modified date
2010-04-27
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 SLES
Fixed component ID
5724U8400
Applicable component levels
RC10 PSN IZ67132
UP06/09/13
[{"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":"C.1","Line of Business":{"code":"LOB57","label":"Power"}}]
Document Information
Modified date:
24 February 2022