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)