Fixes are available
May 2011 PTF for XL C for AIX, V11.1
May 2011 PTF for XL C/C++ for AIX, V11.1
August 2011 PTF for XL C/C++ for AIX, V11.1
November 2011 PTF for XL C/C++ for AIX, V11.1
January 2012 PTF for XL C for AIX, V11.1
January 2012 PTF for XL C/C++ for AIX, V11.1
April 2012 PTF for XL C for AIX, V11.1
April 2012 PTF for XL C/C++ for AIX, V11.1
July 2012 PTF for XL C/C++ for AIX, V11.1
October 2012 PTF for XL C for AIX, V11.1
October 2012 PTF for XL C/C++ for AIX, V11.1
February 2013 PTF for XL C for AIX, V11.1
February 2013 PTF for XL C/C++ for AIX, V11.1
XL C/C++ for AIX Fix Pack 14 (May 2013 PTF) for 11.1
XL C for AIX Fix Pack 14 (May 2013 PTF) for 11.1
XL C/C++ for AIX Fix Pack 15 (August 2013 PTF) for 11.1
XL C for AIX Fix Pack 15 (August 2013 PTF) for 11.1
XL C/C++ for AIX Fix Pack 16 (November 2013 PTF) for 11.1
XL C for AIX Fix Pack 17 (February 2014 PTF) for 11.1
XL C/C++ for AIX Fix Pack 17 (February 2014 PTF) for 11.1
XL C/C++ for AIX Fix Pack 18 (May 2014 PTF) for 11.1
XL C/C++ for AIX Fix Pack 19 (August 2014 PTF) for 11.1
XL C/C++ for AIX Fix Pack 20 (November 2014 PTF) for 11.1
XL C for AIX Fix Pack 21 (April 2015 PTF) for 11.1
XL C/C++ for AIX Fix Pack 21 (April 2015 PTF) for 11.1
XL C/C++ for AIX Fix Pack 22 (September 2015 PTF) for 11.1
XL C for AIX Fix Pack 23 (March 2016 PTF) for 11.1
XL C/C++ for AIX Fix Pack 23 (March 2016 PTF) for 11.1
XL C for AIX Fix Pack 24 (September 2016 PTF) for 11.1
XL C/C++ for AIX Fix Pack 24 (September 2016 PTF) for 11.1
August 2011 PTF for XL C for AIX, V11.1
November 2011 PTF for XL C for AIX, V11.1
July 2012 PTF for XL C for AIX, V11.1
XL C for AIX Fix Pack 16 (November 2013 PTF) for 11.1
XL C for AIX Fix Pack 18 (May 2014 PTF) for 11.1
XL C for AIX Fix Pack 19 (August 2014 PTF) for 11.1
XL C for AIX Fix Pack 20 (November 2014 PTF) for 11.1
XL C for AIX Fix Pack 22 (September 2015 PTF) for 11.1
APAR status
Closed as program error.
Error description
Compilation with -O5 of the following test case hangs (takes >4 hours) with the V11.1 compiler. The test case contains multiple levels of for loops. V10.1 compiler compile it fine within a few minutes. ===== TESTCASE: $cat test.c #include <stdio.h> #define Y 1 #define B 2 #define G 3 #define R 4 void match(int,int,int,int,int,int,int,int,int); struct card { int color[4]; int head[4]; /* 1 or 0 */ } spil[9] = {G,R,B,Y, 0,0,1,1, B,R,B,Y, 0,0,1,1, B,R,G,Y, 0,0,1,1, R,Y,B,G, 0,0,1,1, G,Y,G,R, 0,0,1,1, Y,R,G,B, 0,0,1,1, B,Y,G,R, 0,0,1,1, G,R,B,Y, 0,0,1,1, Y,G,B,R, 0,0,1,1}; int allok[9]; long long int tries = 0; main() { int i, c1,c2,c3,c4,c5,c6,c7,c8,c9; for (i=0;i<9;i++) allok[i] = 0; printf("Here we go...\n"); fflush(stdout); for (c1=0; c1<9; c1++) { allok[c1] = 1; for (c2=0; c2<9; c2++) { if (allok[c2]) continue; else allok[c2] = 1; for (c3=0; c3<9; c3++) { if (allok[c3]) continue; else allok[c3] = 1; for (c4=0; c4<9; c4++) { if (allok[c4]) continue; else allok[c4] = 1; for (c5=0; c5<9; c5++) { if (allok[c5]) continue; else allok[c5] = 1; for (c6=0; c6<9; c6++) { if (allok[c6]) continue; else allok[c6] = 1; for (c7=0; c7<9; c7++) { if (allok[c7]) continue; else allok[c7] = 1; for (c8=0; c8<9; c8++) { if (allok[c8]) continue; else allok[c8] = 1; for (c9=0; c9<9; c9++) { if (allok[c9]) continue; else allok[c9] = 1; match(c1,c2,c3,c4,c5,c6,c7,c8,c9); allok[c9] = 0; }; allok[c8] = 0; }; allok[c7] = 0; }; allok[c6] = 0; }; allok[c5] = 0; }; allok[c4] = 0; }; allok[c3] = 0; }; allok[c2] = 0; }; allok[c1] = 0; }; } void match(int c1,int c2,int c3,int c4,int c5,int c6,int c7,int c8,int c9) { int d1,d2,d3,d4,d5,d6,d7,d8,d9; int s1,s3,s5,s7,s9; for (d1=0; d1<4; d1++) { for (d2=0; d2<4; d2++) { for (d3=0; d3<4; d3++) { for (d4=0; d4<4; d4++) { for (d5=0; d5<4; d5++) { for (d6=0; d6<4; d6++) { for (d7=0; d7<4; d7++) { for (d8=0; d8<4; d8++) { for (d9=0; d9<4; d9++) { s1=s3=s5=s7=s9=0; if (spil[c1].color[(1+d1)%4] == spil[c2].color[(3+d2)%4] && spil[c1].head[(1+d1)%4] != spil[c2].head[(3+d2)%4] && spil[c1].color[(2+d1)%4] == spil[c4].color[(0+d4)%4] && spil[c1].head[(2+d1)%4] != spil[c4].head[(0+d4)%4]) s1 = 1; if (spil[c3].color[(3+d3)%4] == spil[c2].color[(1+d2)%4] && spil[c3].head[(3+d3)%4] != spil[c2].head[(1+d2)%4] && spil[c3].color[(2+d3)%4] == spil[c6].color[(0+d6)%4] && spil[c3].head[(2+d3)%4] != spil[c6].head[(0+d6)%4]) s3 = 1; if (spil[c7].color[(0+d7)%4] == spil[c4].color[(2+d4)%4] && spil[c7].head[(0+d7)%4] != spil[c4].head[(2+d4)%4] && spil[c7].color[(1+d7)%4] == spil[c8].color[(3+d8)%4] && spil[c7].head[(1+d7)%4] != spil[c8].head[(3+d8)%4]) s7 = 1; if (spil[c9].color[(0+d9)%4] == spil[c6].color[(2+d6)%4] && spil[c9].head[(0+d9)%4] != spil[c6].head[(2+d6)%4] && spil[c9].color[(3+d9)%4] == spil[c8].color[(1+d8)%4] && spil[c9].head[(3+d9)%4] != spil[c8].head[(1+d8)%4]) s9 = 1; if (spil[c5].color[(0+d5)%4] == spil[c2].color[(2+d2)%4] && spil[c5].head[(0+d5)%4] != spil[c2].head[(2+d2)%4] && spil[c5].color[(1+d5)%4] == spil[c6].color[(3+d6)%4] && spil[c5].head[(1+d5)%4] != spil[c6].head[(3+d6)%4] && spil[c5].color[(2+d5)%4] == spil[c8].color[(0+d8)%4] && spil[c5].head[(2+d5)%4] != spil[c8].head[(0+d8)%4] && spil[c5].color[(3+d5)%4] == spil[c4].color[(1+d4)%4] && spil[c5].head[(3+d5)%4] != spil[c4].head[(1+d4)%4]) s5 = 1; tries++; if (s1*s3*s5*s7*s9) { printf("Kort (tries=%ld):\n", tries); printf(" %d %d %d\n %d %d %d\n %d %d %d\n", c1+1,c2+1,c3+1,c4+1,c5+1,c6+1,c7+1,c8+1,c9+1); printf("Retning:\n %d %d %d\n %d %d %d\n %d %d %d\n", d1,d2,d3,d4,d5,d6,d7,d8,d9); fflush(stdout); exit(0); } }}}}}}}}}; }
Local fix
Use -O3 or -O5 -qnohot
Problem summary
PROBLEM DESCRIPTION: Long compilation time for a small source file at -O4/-O5 that makes it appear to be hanging. USERS AFFECTED: This occurs only for very deep loops (6 or more) with numerous array references when polyhedral analysis is in effect (-O4/-O5).
Problem conclusion
Problem is fixed. Apply PTF for fix.
Temporary fix
Comments
APAR Information
APAR number
IZ91395
Reported component name
XL C/C++ AIX
Reported component ID
5724X1300
Reported release
B10
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt
Submitted date
2010-12-24
Closed date
2011-03-08
Last modified date
2011-03-08
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 FOR AIX
Fixed component ID
5724X1200
Applicable component levels
Document Information
Modified date:
05 October 2021