IBM Support

LI75006: INLINE FUNCTION REFERENCED NOT DEFINED ERROR

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • A reduced and legitimate test case generated error complaining
    the inline function is reference, but it is not defined.
    
    class A
    {public:
    virtual int boo() { return 1; }
    };
    
    class B :public virtual A
    {public:
    virtual int boo() { return 4; }
    
    virtual ~B();
    virtual void foo();
    };
    
    void B::foo()
    {}
    
    "inline_virtual2.C", line 8.13: 1540-0723 (S) The inline
    function "int
    boo()" is referenced, but it is not defined.
    

Local fix

  • Use -qkeepinlines or,
    Use global volatile function pointers to reference the functions
    for which this error occurs.
    

Problem summary

  • USER AFFECTED:
    Programs that meet the following criterias:
    1. A derived class with virtual inheritance of its base class
    2. The derived class has inline and non-inline virtual
    functions declared.
    3. The distinguishing function (first non-inline virtual
    function) of the
    derived class is not defined
    
    PROBLEM DESCRIPTION:
    In the case where the distinguishing function is not
    defined, XLC still generates virtual thunks for the
    inline virtual functions (this does not match the behavior of
    GCC
    where virutal thunks are not created).
    The virtual thunk declarations cause error since
    they have no implemenation and are needed to be inlined.
    

Problem conclusion

  • Disable the generation of the virtual thunk declartions for
    classes
    without defined distinguishing function.
    

Temporary fix

Comments

APAR Information

  • APAR number

    LI75006

  • Reported component name

    XL C/C++ AE BG/

  • Reported component ID

    5799HJE00

  • Reported release

    900

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2009-11-04

  • Closed date

    2010-01-12

  • Last modified date

    2010-01-12

Fix information

  • Fixed component name

    XL C/C++ AE BG/

  • Fixed component ID

    5799HJE00

Applicable component levels

  • R900 PSY

       UP

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

Document Information

Modified date:
14 October 2021