Fixes are available
September 2012 Update for XL C/C++ for Linux, V12.1
April 2013 Update for XL C/C++ for Linux, V12.1
XL C/C++ for Linux Fix Pack 8 (October 2015 Update) for 12.1
December 2012 Update for XL C/C++ for Linux, V12.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
APAR status
Closed as program error.
Error description
When a client specifically uses the _Pragma("execution_frequency(very_low)"), the compiler should respect it and set the hint bits accordingly. But, below is a section of a listing where the compiler was ignoring the user pragma: Listing file: | 000000 PDEF sqlv_dec31_add_dec31(unsigned char *, const unsigned char * const, size_t) | 000000 AKA sqlv_dec31_add_dec31__FPUcCPCUcUl 36| PROC sum,addend,addendLength,gr3-gr5 0| 000000 std FBE1FFF8 1 ST8 #stack(gr1,-8)=gr31 1444| 000004 cmpldi 28250010 1 CL8 cr0=gr5,16 1444| 000008 ld E8C20008 1 L8 gr6=.$STATIC(gr2,0) 1444| 00000C rlwinm 54A51E38 1 RN4 gr5=gr5,3,0xF8 1444| 000010 ldx 7C06282A 1 L8 gr0=$STATIC(gr6,gr5,0) 1444| 000014 bc 41810018 1 BT CL.141,cr0,0x10/lgt,taken=50%(0,0) <---- Ignored here 1444| 000018 mtspr 7C0903A6 1 LCTR ctr=gr0 1444| 00001C bcctr 4E800420 1 BA ctr,*11182,147 The indicated branch above is marked 50/50, but should be marked as taken rarely.
Local fix
n/a
Problem summary
USERS AFFECTED: Anyone using the pragma to indicate cold branches that are simple enough to transform into a SEL instruction are affected by this issue. TPO must be involved (-O3 or above). PROBLEM DESCRIPTION: pragma execution_frequency(very_low) is getting misplaced by TPO causing sub-optimal code-gen
Problem conclusion
The issue has been fixed.
Temporary fix
Comments
APAR Information
APAR number
LI76947
Reported component name
XL C/C++ FOR LI
Reported component ID
5725C7300
Reported release
C10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2012-08-28
Closed date
2012-08-28
Last modified date
2012-08-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 C/C++ FOR LI
Fixed component ID
5725C7300
Applicable component levels
RC10 PSN IV22269
UP06/09/13
[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSXVZZ","label":"XL C\/C++ for Linux"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"12.1","Line of Business":{"code":"LOB57","label":"Power"}}]
Document Information
Modified date:
16 October 2021