Fixes are available
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
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
The counter in the for loop goes past its boundaries when compiling with -qipa and causes an incorrect output at runtime. The issue goes away if you remove -qipa from the compile line. ===== COMPILE COMMAND: xlC_r -o tc test.c -O -q64 -qipa ===== TESTCASE: $ cat test.c #include <stdio.h> int main() { unsigned int ctr=6; unsigned int stop = (unsigned int)-1; unsigned int start = 5; printf("start=%u ; stop=%u\n",start,stop); for(ctr = start ; ctr != stop ; --ctr) { printf("ctr=%u\n",ctr); if (ctr>start) { printf("Shouldn't get here\n"); exit(1); } } } $ ===== ACTUAL OUTPUT: $ ./tc start=5 ; stop=4294967295 ctr=5 ctr=4 ctr=3 ctr=2 ctr=1 ctr=0 ctr=4294967295 Shouldn't get here $ ===== EXPECTED OUTPUT: $ ./tc start=5 ; stop=4294967295 ctr=5 ctr=4 ctr=3 ctr=2 ctr=1 ctr=0 $
Local fix
Compile with -qstrict_induction. Although, you may need to monitor the runtime performance when using this option.
Problem summary
USERS AFFECTED: Users using -qhot=level=0 or above may be affected by this issue. PROBLEM DESCRIPTION: When -qhot=level=0 or higher is used, users may encounter incorrect output due to an internal induction variable overflow.
Problem conclusion
The fix consists of detecting a loop normalization opportunity where the induction variable overflows; so that users do not have to face a performance impact of using -qstrict_induction.
Temporary fix
Comments
APAR Information
APAR number
LI77357
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
2013-04-27
Closed date
2013-04-27
Last modified date
2013-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 C/C++ FOR LI
Fixed component ID
5725C7300
Applicable component levels
RC10 PSN IV33243
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:
14 October 2021