Skip to main content

IV33243: INCORRECT LOOP COUNTER WITH -QIPA


Subscribe

You can track all active APARs for this component.

 

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

    IV33243

  • 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

    2012-12-10

  • Closed date

    2013-02-07

  • Last modified date

    2013-02-08

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

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

    IV37956 LI77357

Fix information

  • Fixed component name

    XL C FOR AIX

  • Fixed component ID

    5724X1200

Applicable component levels

  • RB10 PSY U857980

       UP C

Rate this page:

(0 users)Average rating

Copyright and trademark information

IBM, the IBM logo and ibm.com are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at www.ibm.com/legal/copytrade.shtml.

Rate this page:


(0 users)Average rating

Add comments

Document information

XL C for AIX


Software version:
11.1


Reference #:
IV33243


Modified date:
2013-02-08

Translate my page

Content navigation