IBM Support

LI76947: BRANCH HINTS WITH EXECUTION_FREQUENCY IGNORED

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • When a client specifically uses the
    _Pragma("execution_frequency(very_low)"), the compiler should
    respect it and set the hint bits accordingly.
    
    But, below is a section of a listing where the compiler was
    ignoring the user pragma:
    
    Listing file:
    
    
         | 000000                           PDEF
    sqlv_dec31_add_dec31(unsigned char *, const unsigned char *
    const, size_t)
         | 000000                           AKA
    sqlv_dec31_add_dec31__FPUcCPCUcUl
       36|                                  PROC
    sum,addend,addendLength,gr3-gr5
        0| 000000 std      FBE1FFF8   1     ST8
    #stack(gr1,-8)=gr31
     1444| 000004 cmpldi   28250010   1     CL8       cr0=gr5,16
     1444| 000008 ld       E8C20008   1     L8
    gr6=.$STATIC(gr2,0)
     1444| 00000C rlwinm   54A51E38   1     RN4       gr5=gr5,3,0xF8
     1444| 000010 ldx      7C06282A   1     L8
    gr0=$STATIC(gr6,gr5,0)
     1444| 000014 bc       41810018   1     BT
    CL.141,cr0,0x10/lgt,taken=50%(0,0) <---- Ignored here
     1444| 000018 mtspr    7C0903A6   1     LCTR      ctr=gr0
     1444| 00001C bcctr    4E800420   1     BA        ctr,*11182,147
    
    The indicated branch above is marked 50/50, but should be
    marked as taken rarely.
    

Local fix

  • n/a
    

Problem summary

  • USERS AFFECTED:
    Anyone using the pragma to indicate cold branches that are
    simple enough to transform into a SEL instruction are affected
    by this issue.
    TPO must be involved (-O3 or above).
    
    PROBLEM DESCRIPTION:
    pragma execution_frequency(very_low) is getting misplaced by
    TPO causing sub-optimal code-gen
    

Problem conclusion

  • The issue has been fixed.
    

Temporary fix

Comments

APAR Information

  • APAR number

    LI76947

  • Reported component name

    XL C/C++ FOR LI

  • Reported component ID

    5725C7300

  • Reported release

    C10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2012-08-28

  • Closed date

    2012-08-28

  • Last modified date

    2012-08-28

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

    IV22269

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

Fix information

  • Fixed component name

    XL C/C++ FOR LI

  • Fixed component ID

    5725C7300

Applicable component levels



Document information

More support for: XL C/C++ for Linux
Compiler

Software version: 12.1

Reference #: LI76947

Modified date: 28 August 2012