> On Sep 4, 2019, at 5:18 PM, Nick Desaulniers <ndesaulni...@google.com> wrote: > > On Fri, Aug 30, 2019 at 4:15 PM Rasmus Villemoes > <li...@rasmusvillemoes.dk> wrote: >> This adds an asm_inline macro which expands to "asm inline" [1] when gcc >> is new enough (>= 9.1), and just asm for older gccs and other >> compilers. >> >> Using asm inline("foo") instead of asm("foo") overrules gcc's >> heuristic estimate of the size of the code represented by the asm() >> statement, and makes gcc use the minimum possible size instead. That >> can in turn affect gcc's inlining decisions. >> >> I wasn't sure whether to make this a function-like macro or not - this >> way, it can be combined with volatile as >> >> asm_inline volatile() >> >> but perhaps we'd prefer to spell that >> >> asm_inline_volatile() >> >> anyway. >> >> [1] Technically, asm __inline, since both inline and __inline__ >> are macros that attach various attributes, making gcc barf if one >> literally does "asm inline()". However, the third spelling __inline is >> available for referring to the bare keyword. >> >> Signed-off-by: Rasmus Villemoes <li...@rasmusvillemoes.dk> >> --- >> include/linux/compiler-gcc.h | 4 ++++ >> include/linux/compiler_types.h | 4 ++++ >> 2 files changed, 8 insertions(+) >> >> diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h >> index d7ee4c6bad48..544b87b41b58 100644 >> --- a/include/linux/compiler-gcc.h >> +++ b/include/linux/compiler-gcc.h >> @@ -172,3 +172,7 @@ >> #endif >> >> #define __no_fgcse __attribute__((optimize("-fno-gcse"))) >> + >> +#if GCC_VERSION >= 90100 > > Is it too late to ask for a feature test macro? Maybe one already > exists? I was not able to find documentation or a bug on `asm > inline`. I'm quite curious how you even found or heard of this > feature. To the source we must go...
When I had some free time I wrote a detailed blog post about this issue: https://nadav.amit.zone/linux/2018/10/10/newline.html Which later Borislav took to gcc people: https://lore.kernel.org/lkml/20181007091805.ga30...@zn.tnic/