IBM Support

LI77421: INEFFICIENT CODE FOR TRIVIAL VECTOR CONSTANTS

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • The compiler generates in-efficient code for trivial vector
    contants.
    
    eg:
    $ cat test.cpp
    const vector signed int zeros = { 0,0,0,0 };
    
    extern "C" vector signed int vec_zeros()
    {
        return zeros;
    }
    
    $ cat test.lst
    VR's set/used:   --s- ---- ---- ----  ---- ---- ---- ----
        | 000000                           PDEF     vec_zeros
       3|                                  PROC
       5| 000000 ld       E8620008   1     L8
    gr3=.+CONSTANT_AREA(gr2,0)
       5| 000004 lxvd2x   7C401E99   1     VLQD
    vs34=zeros(gr3,0)
       6| 000008 bclr     4E800020   1     BA        lr
    
    $
    
    
    It should be generating code such as:
       21| 000040 xxlxor   F04004D7   1     VXOR      vs34=vs32,vs32
       22| 000044 bclr     4E800020   1     BA        lr
    

Local fix

  • N/A
    

Problem summary

  • USERS AFFECTED:
    Users who have test cases with trivial vectors of zeros.
    
    PROBLEM DESCRIPTION:
    The compiler generates inefficient code for trivial vector of
    zeros, when this vector is defined as a global variable.
    

Problem conclusion

  • The compiler has been fixed so that once the zero vector is
    determined to be stored in the constant area, code is added to
    retrieve the zero vector.
    

Temporary fix

Comments

APAR Information

  • APAR number

    LI77421

  • Reported component name

    XL C/C++ FOR BG

  • Reported component ID

    5799AG100

  • Reported release

    C10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2013-05-29

  • Closed date

    2013-05-29

  • Last modified date

    2013-05-29

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

    IV36987

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

Fix information

  • Fixed component name

    XL C/C++ FOR BG

  • Fixed component ID

    5799AG100

Applicable component levels

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SS2LWA","label":"XL C\/C++ for Blue Gene\/Q"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"12.1","Edition":"","Line of Business":{"code":"LOB73","label":"Power TPS"}}]

Document Information

Modified date:
05 September 2024