When clang is invoked with the ‘-fno-inline’ flag and the C function is prefixed by ‘attribute((always_inline))’, clang does not inline the function whereas GCC does. GCC’s behavior seems more intuitive to me - that the file-level annotation should override the command-line flag. Do you agree? Can we make clang match gcc?
Yes, I generally agree with GCC’s interpretation here. Care to write a patch implementing this? I’m happy to review it.
For reference, the ‘always_inline’ attribute often has a semantic contract – failing to inline it can produce wrong code, not just slow code, so it should trump almost everything else.
Thanks for the quick reply. I cannot reproduce the issue in trunk or the 3.1 release - false alarm.