LI77616: MISSING LOAD WITH -O3
Fixes are available
XL C/C++ for Linux Fix Pack 8 (October 2015 Update) for 12.1
XL C/C++ for Linux Fix Pack 4 (October 2013 Update) for 12.1
XL C/C++ for Linux Fix Pack 5 (December 2013 Update) for 12.1
XL C/C++ for Linux Fix Pack 6 (February 2014 Update) for 12.1
XL C/C++ for Linux Fix Pack 7 (May 2014 Update) for 12.1
Closed as program error.
There are certain scenarios where the compiler might remove a necessary load 'after' a sync() instruction before its used. An example is the following: .L1629: lwz r3,96(r31) lwz r6,104(r31) <---- load of r6 subf r4,r6,r3 addi r0,r3,-1 rlwinm. r3,r4,0,15,31 beq .L2014 rlwinm r4,r0,0,15,31 stw r4,96(r31) sync <---- sync instruction ld r3,144(r31) rlwinm r5,r0,3,12,28 subf r0,r6,r0 <---- r6 is being used in subf without it being loaded again after the sync instruction rlwinm r0,r0,0,15,31 cmplw cr0,r0,r27 ldx r3,r3,r5 std r3,112(r1) beq .L1655 cmpdi cr0,r0,0 bne .L173
USERS AFFECTED: Users coding in assembly and those who use the sync instruction may be affected by this issue. PROBLEM DESCRIPTION: The compiler forgets to generate a load after the sync instruction.
The compiler has been fixed to invalidate all aliasing symbols before sync the instruction so that they will be reloaded after sync instruction.
Reported component name
XL C/C++ FOR LI
Reported component ID
Last modified date
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
Fixed component name
XL C/C++ FOR LI
Fixed component ID
Applicable component levels
RC10 PSN IV51008