osRtxThreadDelayTick() includes unnecessary code if OS_EVR_xxx macros are off
Hi,
This commit introduced an issue. https://github.com/ARM-software/CMSIS_5/commit/11e3d0f8608ca1e5002f10ded886d59181338e3b
The introduction of the local variable object in osRtxThreadDelayTick() increases code size of that function significantly. If EvrRtxEventFlagsWaitTimeout() etc. are empty macros, the compiler can no longer optimize away the call to osRtxThreadListRoot(). It expands osRtxThreadListRoot inline for each case label. The temporary object should be used in case osRtxThreadWaitingMutex only. The other EvrXxx calls should look like this: EvrRtxEventFlagsWaitTimeout(osRtxEventFlagsObject(osRtxObject(osRtxThreadListRoot(thread))));
Because osRtxThreadListRoot() walks the thread list unnecessarily, there is also a runtime impact.
Thanks Udo
Should be fixed now as suggested. Thanks for reporting it.