IBM Support

LI76109: TRAPS WITH -QFLTTRAP=IMP -O3 -QSTRICT

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • The following test case traps if compiled with -O3 -qflttrap=imp
    -qstrict
    
    xlc -O3 -qflttrap=imp -qstrict fltint.c && ./a.out
    i 0  c '0'
    Trace/BPT trap
    
    
    -----
    $cat fltint.c
    
    #include <stdio.h>
    #include <fptrap.h>
    
    void foo(int val, int *dst)
    {
      int i;
    
      for (i = 0; i < 1; i++)
        *dst = val;
    }
    
    int zero;
    
    void bar(char *fmt)
    {
      int rc, i, c, t;
      double x;
    
      rc = 0 ;
      x = zero ? 0 : 1e100;
    
      for (i = 0; i < 1 && rc == 0; i++)
      {
        c = fmt[0];
        printf("i %d  c '%c'\n", i, c);
        switch (c)
        {
        case 'A':                  break;
        case 'B': foo((int)x, &t); break;
        default:           rc = 1; break;
        }
      }
    }
    
    int main()
    {
      (void) fp_enable(TRP_INVALID);
      bar("0");
      return 0;
    }
    

Local fix

  • Use -qflttrap instead of -qflttrap=imp
    

Problem summary

  • PROBLEM DESCRIPTION: A potentially trapping floating point
    instruction could be moved past a guarding branch
    
    USERS AFFECTED: Users of -qflttrap or those enabling floating
    point traps via AIX function calls
    

Problem conclusion

  • Two additional flags now suppress moving potentially trapping
    instructions past branches.
    With the fix, users can use -qfloat=fenv or -qstrict=guards to
    guard the condition.
    
    For example, compile with xlc -O3 -qflttrap=imp -qfloat=fenv or
    xlc -O3 -qflttrap=imp -qstrict=guards.
    

Temporary fix

Comments

APAR Information

  • APAR number

    LI76109

  • Reported component name

    XL C/C++ FOR LI

  • Reported component ID

    5724X1400

  • Reported release

    B10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2011-04-27

  • Closed date

    2011-04-27

  • Last modified date

    2011-04-27

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

    IZ89322

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

Fix information

  • Fixed component name

    XL C/C++ FOR LI

  • Fixed component ID

    5724X1400

Applicable component levels

[{"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":"B10","Line of Business":{"code":"LOB57","label":"Power"}}]

Document Information

Modified date:
17 October 2021