IV37037: INCORRECT COMPILE TIME ERROR MESSAGE WITH OBJECTS

Subscribe

You can track all active APARs for this component.

APAR status

  • Closed as program error.

Error description

  • When compiling the following test case, the compiler
    incorrectly generates an error message:
    
    ====Compile command:
    xlC_r -q64 -c test.cpp
    
    ====Testcase:
    $ cat test.cpp
    class FOO {
     public:
      ~FOO() {}
    };
    
    class StackObj {
     public:
      void  operator delete(void* p) {}
    };
    
    class MethodHandleWalker : StackObj {
      FOO foo;
    };
    
    class MethodHandleCompiler : public MethodHandleWalker {
    };
    
    int main(int argc, char* argv[]) {
    
      {
        MethodHandleCompiler mh;
      }
    
      return 1;
    }
    $
    
    =====Actual Output:
    $ xlC_r -q64 -c test.cpp
    "test.cpp", line 11.28: 1540-0198 (W) The omitted keyword
    "private" is assumed for base class "StackObj".
    "test.cpp", line 6.7: 1540-0300 (S) The "private" member "class
    StackObj" cannot be accessed.
    "test.cpp", line 15.7: 1540-0719 (I) The previous message was
    produced while processing the implicit member function
    "MethodHandleCompiler::~MethodHandleCompiler()".
    "test.cpp", line 18.5: 1540-0700 (I) The previous message was
    produced while processing "main(int, char *[])".
    
    
    =====Expected Output:
    $ xlC_r -q64 -c test.cpp
    "test.cpp", line 11.28: 1540-0198 (W) The omitted keyword
    "private" is assumed for base class "StackObj".
    $
    

Local fix

  • N/A
    

Problem summary

  • USERS AFFECTED:
    This only happens for a compiler generated destructor of a
    derived class when its base class derives privately from the
    class where a publicly defined operator function resides.
    
    PROBLEM DESCRIPTION:
    Compiler is incorrectly generating access checking error (ie
    error code 1540-0300) for public operator delete function.
    

Problem conclusion

  • When access checking is performed for any operator functions we
    do not treat the enclosing class as the qualifier for the
    operator function to avoid diagnostic 1540-0300.
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV37037

  • Reported component name

    XL C/C++ FOR AI

  • Reported component ID

    5725C7200

  • Reported release

    C10

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2013-02-20

  • Closed date

    2013-03-12

  • Last modified date

    2013-03-13

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

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

    LI77342 LI77411

Fix information

  • Fixed component name

    XL C/C++ FOR AI

  • Fixed component ID

    5725C7200

Applicable component levels

  • RC10 PSY U858524

       UP C



Rate this page:

(0 users)Average rating

Document information


More support for:

XL C/C++ for AIX
Compiler

Software version:

12.1

Reference #:

IV37037

Modified date:

2013-03-13

Translate my page

Machine Translation

Content navigation