The Elvis operator ?: was voted into C2y, size_t literal suffixes were not.
Implement C23 qualifier-preserving macros for string library functions.
Various type system fixes related to _Generic, default constness and implicit char signedness.
Apparently, the Rabbit 4000 port is not handled correctly, here. For the time being, you could try to disable that, too, since that was probably your intention, anyway.
With a bit of luck, I will have ckd_mul and ckd_add for unsigned long long ready for the upcoming release. That would be by far the most elegant way to get rid of the warning.
With --stack-auto, this one works, too. Quoting myself: The observed behavior can potentially be explained with SDCC's default settings: For historical reasons, the default target -mmcs51 generates non-reeantrant function code, unless --stack-auto is specified. It then compares qualified function types, because it must not ignore (explicit or implicit) address space qualifiers. See also [feature-requests:#948], which addresses this unintuitiveness.
Maybe it is sufficient to output a warning only when the default behavior directly conflicts with the user's presumed intention, namely when standard compliance has been explicitly requested via e.g. --std-c23. When such a command line switch has been specified, the current default behavior for e.g. MCS-51 (the compiler outputting non-reentrant code by default) becomes particularly unintuitive.
(comment copied from a different bug ticket) Can you retry with sdcc -c --std=c23 --stack-auto or sdcc -c --std=c23 -mz80? The observed behavior can potentially be explained with SDCC's default settings: For historical reasons, the default target -mmcs51 generates non-reeantrant function code, unless --stack-auto is specified. It then compares qualified function types, because it must not ignore (explicit or implicit) address space qualifiers. See also [feature-requests:#948], which addresses this...