This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler error



Just got this text from the compiler:

> C:/Work/rtsc_c/01 Units/03 TorqueControl/CTCV200/vcb200/SW/trunk/src/common/rtc_ByteArray.h, line 126:
               INTERNAL ERROR: no match for MCALL


This may be a serious problem.  Please contact customer support with a
description of this problem and a sample of the source files that caused this
INTERNAL ERROR message to appear.

Cannot continue compilation - ABORTING!

...

rtc_ByteArray is a class that wraps a C style array together with a bunch of __byte() intrinsics.

The code that triggers the error above is:

    // CMT: Get Current macro
    int16 CmtMsgDispatcher::processMsgGetCurrentMacro(rtc::ByteArray& buffer) {   
        const Uint16 groupId     = buffer.atB(0); // <-- this line triggers the error

/// doing something fancy with the ByteArray here

       return buffer.sizeB();
    }

 

Here is the atB method of the ByteArray. mData is Uint16* + MEM_Alloc. So really, just a wrapper (declared in .h file, probably inlined).

        Uint16    atB(const Uint16 index) const {
            return __byte((int*)mData, index);
        }

The call to atB works in lots of other places.

 

Ok. Just got some more info. The result of const Uint16 groupId = buffer.atB(0) was not used anywhere in the function. If I declare the variable as volatile or make sure it is used somewhere the error goes away. Optimizer erroer?

 

(Using CGTs v5.2.0)