Fixes are available
November 2010 PTF for XL C/C++ Enterprise Edition for AIX, V9.0
March 2011 PTF for XL C/C++ Enterprise Edition for AIX, V9.0
July 2011 PTF for XL C/C++ Enterprise Edition for AIX, V9.0
December 2011 PTF for XL C/C++ Enterprise Edition for AIX, V9.0
March 2012 PTF for XL C/C++ Enterprise Edition for AIX, V9.0
May 2010 PTF for XL C/C++ Enterprise Edition for AIX, V9.0
August 2010 PTF for XL C/C++ Enterprise Edition for AIX, V9.0
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
APAR is sysrouted FROM one or more of the following:
APAR is sysrouted TO one or more of the following:
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