IBM Support

IV12899: OPTIMIZATION CAUSES INCORRECT OUTPUT

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Consider the following testcase:
    
    //////////////// test.cpp ///////////////////
    extern "C" int printf(const char *, ...);
    
    struct Date {
      Date(int i) : i_(i) { }
      friend inline Date foo(Date date, int secs);
      Date& operator +=(int secs);
      int i_;
    };
    
    inline Date foo(Date date, int secs) { return date += secs; }
    
    Date& Date::operator+=(int secs) {
      i_ += secs;
      return *this;
    }
    
    int main() {
      Date now = Date(42);
      foo(now, 56);
      printf("%d\n", now.i_);
    }
    /////////////////////////////////////////////
    
    Compile with optimization turned OFF:
    
    $xlC test.cpp
    $./a.out
    42  // correct
    
    Compile with optimization turned ON:
    $xlC -O test.cpp
    $./a.out
    98  // incorrect
    

Local fix

  • Do not turn on optimization
    

Problem summary

  • Front-end failed to create a temporary to latch an argument
    when inlining.
    

Problem conclusion

  • The fix is safe and the correct means of resolving the problem.
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV12899

  • 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-01-09

  • Closed date

    2012-01-09

  • Last modified date

    2012-01-09

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

    IV10507

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

Fix information

  • Fixed component name

    XL C/C++ AIX

  • Fixed component ID

    5724X1300

Applicable component levels

  • RB10 PSY U849548

       UP C

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSGH3R","label":"XL C\/C++ for AIX"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"11.1","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
09 January 2012