Hi David, Pinky, Steve and all,
I'd agree with "uh, I need to know where this goes wrong please, I'm scared". I'd also agree, an inlined function should probably have compilation unit scope, anyway, so `static` would be appropriate.
I've taken a look at the patched function declarations and would recommend to just remove `min16` and `max16` alltogether (only used in a comment, and frankly, not that great a function `(a<>b?a:b)`).
I'd really like to know the compile error! Maybe there's actually something we can do – simply because this really *shouldn't* fail, imho.
Best regards, Marcus
On Thu, 2018-06-28 at 20:50 +0200, Pinky wrote:
Hi all,
althought the argument about compiller is a bit strange the change is in my opinion in right course. If the goal is to use those functions only in this one particular .c file and not elsewhere, the good practice is to limit scope by using static.
Can You please let us know how to reproduce behaviour You have described?
with best regards, Pinky.
- Steve Markgraf steve@steve-m.de [2018-06-28 20:29:34 +0200]:
Hi David,
On 28.06.2018 17:43, David Woodhouse wrote:
With just 'inline', if the compiler decides not to inline them, it isn't required to emit them at all. For some targets with -Os that is causing build failures.
"It isn't required to emit them at all" - What the heck, which compiler on earth does such horrible things?
I've taken at look at the C99 standard for the function specifier 'inline' and there is nothing that would justify such behaviour.
Of course, if that's a bug with a specific compiler version we can merge that, but the explanation in the commit doesn't make any sense to me.
Regards, Steve