In FreeRTOS/Source/portable/GCC/ARM_CM0/port.c, there is a line:
#if !defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
But that doesn’t make sense – wouldn’t it always be false? I wonder if it should instead be:
#if !(defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050))
#if !defined (__ARMCC_VERSION) || (__ARMCC_VERSION >= 6010050)
But I don’t know since I don’t have a thorough knowledge of the behaviour of the different types of compilers that were considered when this was added.
I am able to compile my code with a GCC ARM cross-compiler, versions 4.7.4 and 4.9.3. With the 4.7.4, I get a warning “control reaches end of non-void function [-Wreturn-type]”. But with 4.9.3, I don’t.