IBM Support

IZ72696: INTERNAL COMPILER ERROR IN XLCENTRY

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • The following test case causes the compiler to produce an
    internal compiler error:
    
    $ cat test.cc
    #define OCTAVE_IMPORT __declspec(dllimport)
    //#define OCTAVE_IMPORT
    
    #define OCTAVE_API OCTAVE_IMPORT
    
    #include <stdint.h>
    
    
    #define SND_BOOL_OP(F, OP, S, ND, LHS_ZERO, RHS_ZERO) \
      boolNDArray \
      F (const S& s, const ND& m) \
      { boolNDArray r; int len = m.length (); \
            if (len > 0) \
          { r.resize (m.dims ()); \
            for (int i = 0; i < len; i++) r.elem(i) = (s !=
    LHS_ZERO) OP (m.elem(i) != RHS_ZERO); \
          } \
     return r; \
      }
    
    #define SND_BOOL_OPS2(S, ND, LHS_ZERO, RHS_ZERO) \
      SND_BOOL_OP (mx_el_and, &&, S, ND, LHS_ZERO, RHS_ZERO)
    
    
    
    class
    OCTAVE_API
    boolNDArray
    {
    };
    
    
    
    template <class T>
    class
    intNDArray
    {
    };
    
    
    
    template <class T>
    class
    octave_int
    {
    public:
      template <class U>
      octave_int (U i) { }
    
      template <class U>
      octave_int (const octave_int<U>& i) { }
    
    };
    
    
    typedef octave_int<int64_t> octave_int64;
    typedef octave_int<uint32_t> octave_uint32;
    
    
    #define OCTAVE_US_TYPE1_CMP_OP_DECL(OP, LTZ_VAL, UT, ST) \
      bool OCTAVE_API operator OP (const octave_int<UT>& lhs, const
    octave_int<ST>& rhs);
    
    #define OCTAVE_US_TYPE1_CMP_OP_DECLS(UT, ST) \
      OCTAVE_US_TYPE1_CMP_OP_DECL (!=, true, UT, ST)
    
    #define OCTAVE_SU_TYPE1_CMP_OP_DECL(OP, LTZ_VAL, ST, UT) \
      bool OCTAVE_API operator OP (const octave_int<ST>& lhs, const
    octave_int<UT>& rhs);
    
    #define OCTAVE_SU_TYPE1_CMP_OP_DECLS(ST, UT) \
      OCTAVE_SU_TYPE1_CMP_OP_DECL (!=, true, ST, UT)
    
    #define OCTAVE_TYPE1_CMP_OP_DECLS(UT, ST) \
      OCTAVE_US_TYPE1_CMP_OP_DECLS (UT, ST) \
      OCTAVE_SU_TYPE1_CMP_OP_DECLS (ST, UT)
    
    OCTAVE_TYPE1_CMP_OP_DECLS (uint32_t, int32_t)
    
    
    #define OCTAVE_US_TYPE2_CMP_OP_DECL(OP, LTZ_VAL, UT, ST) \
      bool OCTAVE_API operator OP (const octave_int<UT>& lhs, const
    octave_int<ST>& rhs);
    
    #define OCTAVE_US_TYPE2_CMP_OP_DECLS(ST, UT) \
      OCTAVE_US_TYPE2_CMP_OP_DECL (!=, true, ST, UT)
    
    
    #define OCTAVE_TYPE2_CMP_OP_DECLS(UT, ST) \
      OCTAVE_US_TYPE2_CMP_OP_DECLS (UT, ST)
    
    OCTAVE_TYPE2_CMP_OP_DECLS (uint32_t, int64_t)
    
    
    
    typedef intNDArray<octave_uint32> uint32NDArray;
    
    SND_BOOL_OPS2 (octave_int64, uint32NDArray, octave_int64(0),
    octave_uint32(0))
    $
    
    
    ===== ACTUAL OUTPUT:
    $xlC_r -O -qmaxmem=-1 -qarch=auto test.cc
    /usr/vacpp/bin/.orig/xlC_r: 1501-230 (S) Internal
    compiler error; please contact your Service Representative
    $
    
    ===== EXPECTED OUTPUT:
    Should not produce an internal compiler error.
    

Local fix

  • n/a
    

Problem summary

  • USERS AFFECTED:
    Users of diagnostic cases inside a template operator function
    may be affected
    by this issue.
    
    PROBLEM DESCRIPTION:
    The compiler frontend produces an internal compiler error when
    trying to attempt
    to emit a deallocated message from type analyzer message heap.
    

Problem conclusion

  • The compiler has been fixed to save the appropriate message
    into a message object
    to avoid the internal compiler error.
    

Temporary fix

Comments

APAR Information

  • APAR number

    IZ72696

  • Reported component name

    XLC C++ AIX

  • Reported component ID

    5724S7100

  • Reported release

    900

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2010-03-11

  • Closed date

    2010-04-21

  • Last modified date

    2010-04-21

Fix information

  • Fixed component name

    XLC C++ AIX

  • Fixed component ID

    5724S7100

Applicable component levels

[{"Line of Business":{"code":"LOB08","label":"Cognitive Systems"},"Business Unit":{"code":"BU054","label":"Systems w\/TPS"},"Product":{"code":"SSJT9L","label":"XL C\/C++"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"9.0"}]

Document Information

Modified date:
06 October 2021