IBM Support

IV44261: UNNECESSARY OMP FOR-LOOP CANONICAL FORM CHECK

Fixes are available

XL C/C++ for AIX Fix Pack 4 (June 2013 PTF) for 12.1
XL C/C++ for AIX Fix Pack 5 (September 2013 PTF) for 12.1
XL C/C++ for AIX Fix Pack 7 (January 2014 PTF) for 12.1
XL C for AIX Fix Pack 8 (March 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 8 (March 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 11 (February 2015 PTF) for 12.1
XL C for AIX Fix Pack 12 (May 2015 PTF) for 12.1
XL C/C++ for AIX Fix Pack 12 (May 2015 PTF) for 12.1
XL C/C++ for AIX Fix Pack 13 (August 2015 Update) for 12.1
XL C/C++ for AIX Fix Pack 14 (December 2015 Update) for 12.1
XL C for AIX Fix Pack 15 (April 2016 Update) for 12.1
XL C/C++ for AIX Fix Pack 15 (April 2016 Update) for 12.1
XL C for AIX Fix Pack 16 (July 2016 Update) for 12.1
XL C/C++ for AIX Fix Pack 16 (July 2016 Update) for 12.1
XL C/C++ for AIX Fix Pack 17 (November 2016 Update) for 12.1
XL C for AIX Fix Pack 17 (November 2016 Update) for 12.1
XL C for AIX Fix Pack 18 (February 2017 Update) for 12.1
XL C/C++ for AIX Fix Pack 18 (February 2017 Update) for 12.1
XL C for AIX Fix Pack 19 (August 2017 Update) for 12.1
XL C/C++ for AIX Fix Pack 19 (August 2017 Update) for 12.1
XL C for AIX Fix Pack 20 (March 2018 Update) for 12.1
XL C/C++ for AIX Fix Pack 20 (March 2018 Update) for 12.1
XL C for AIX Fix Pack 4 (June 2013 PTF) for 12.1
XL C for AIX Fix Pack 5 (September 2013 PTF) for 12.1
XL C for AIX Fix Pack 6 (December 2013 PTF) for 12.1
XL C/C++ for AIX Fix Pack 6 (December 2013 PTF) for 12.1
XL C for AIX Fix Pack 7 (January 2014 PTF) for 12.1
XL C for AIX Fix Pack 9 (July 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 9 (July 2014 PTF) for 12.1
XL C for AIX Fix Pack 10 (October 2014 PTF) for 12.1
XL C/C++ for AIX Fix Pack 10 (October 2014 PTF) for 12.1
XL C for AIX Fix Pack 11 (February 2015 PTF) for 12.1
XL C for AIX Fix Pack 13 (August 2015 Update) for 12.1
XL C for AIX Fix Pack 14 (December 2015 Update) for 12.1
XL C/C++ for AIX Fix Pack 21 (January 2019 Update) for 12.1
XL C for AIX Fix Pack 21 (January 2019 Update) for 12.1

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • Compiling C code containing an OMP for loop pragma statement
    with nested for loops is performing an unnecessary canonical
    form check, resulting in invalid error messages.  An internal
    compiler error may also be seen with subsequent nested for
    loops.
    
    
         ===== TEST CASE =====
    
    // xlc_r -qsmp=omp -c test.c
    void a();
    int b();
    void c();
    
    void test()
    {
     for(int j=0; j<10; j++)
     {
      _Pragma("omp for collapse(1)")
      for(int i=0; i<10; i++) { }
     }
    
     for (a(); !b(); c())
     {
      long int  x=0;
      long int  y=0;
      long int const z=0;
    
      for (long int n = x; n < y; n += z) {}
     }
    }
    
    
         ===== ERROR =====
    
    Linux / BG/Q Platforms:
    
    "test.c", line 13.14: 1506-817 (S) Init expression of the for
    loop is not in the canonical form.
    "test.c", line 13.19: 1506-818 (S) Controlling expression of the
    for loop is not in the canonical form.
    "test.c", line 13.25: 1506-819 (S) Re-init expression of the for
    loop is not in the canonical form.
    xlc_r: 1501-224 (S) fatal error in
    /opt/ibmcmp/vac/bg/12.1/exe/xlcentry
    
    
    AIX Platform:
    
    "test.c", line 13.14: 1506-817 (S) Init expression of the for
    loop is not in the canonical form.
    "test.c", line 13.19: 1506-818 (S) Controlling expression of
    the for loop is not in the canonical form.
    "test.c", line 13.25: 1506-819 (S) Re-init expression of the
    for loop is not in the canonical form.
    xlc_r: 1501-230 (S) Internal compiler error; please contact your
    Service Representative. For more information visit:
    http://www.ibm.com/support/docview.wss?uid=swg21110810
    

Local fix

  • Remove OMP pragma, or remove -qsmp=omp option.
    

Problem summary

  • PROBLEM DESCRIPTION:
    The incorrect scope is used by the compiler for the collapse(1)
    set by the pragma omp for.
    
    USERS AFFECTED:
    Using omp for collapse(#) pragmas.
    

Problem conclusion

  • The scope for the 'omp for collapse(1)' is now correctly
    allocated, and the issue is resolved.
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV44261

  • Reported component name

    XL C FOR AIX

  • Reported component ID

    5725C7100

  • Reported release

    C10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2013-06-17

  • Closed date

    2013-06-17

  • Last modified date

    2013-06-17

  • APAR is sysrouted FROM one or more of the following:

    LI77168

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    XL C FOR AIX

  • Fixed component ID

    5725C7100

Applicable component levels



Document information

More support for: XL C for AIX
Compiler

Software version: 12.1

Reference #: IV44261

Modified date: 17 June 2013