IBM Support

LI77658: 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

    LI77658

  • 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

    2013-10-28

  • Closed date

    2013-10-28

  • Last modified date

    2013-10-28

  • 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 LI

  • Fixed component ID

    5725C7300

Applicable component levels



Document information

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

Software version: 12.1

Reference #: LI77658

Modified date: 28 October 2013