On 1 February 2018 at 10:21, Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > Create a new function attribute __optimize, which allows to specify an > optimization level on a per-function basis. > > Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> Acked-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> > --- > I assume this is supported as of gcc-4.4: > - gcc version 4.3.3 (GCC): warning: ‘__optimize__’ attribute directive > ignored > - gcc version 4.4.7 (Ubuntu/Linaro 4.4.7-1ubuntu2): OK > --- > include/linux/compiler-gcc.h | 4 ++++ > include/linux/compiler.h | 4 ++++ > 2 files changed, 8 insertions(+) > > diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h > index 631354acfa720475..0a278a527944ad2f 100644 > --- a/include/linux/compiler-gcc.h > +++ b/include/linux/compiler-gcc.h > @@ -196,6 +196,10 @@ > #endif /* __CHECKER__ */ > #endif /* GCC_VERSION >= 40300 */ > > +#if GCC_VERSION >= 40400 > +#define __optimize(level) __attribute__((__optimize__(level))) > +#endif /* GCC_VERSION >= 40400 */ > + > #if GCC_VERSION >= 40500 > > #ifndef __CHECKER__ > diff --git a/include/linux/compiler.h b/include/linux/compiler.h > index 52e611ab9a6cf6fd..5ff818e9a836e898 100644 > --- a/include/linux/compiler.h > +++ b/include/linux/compiler.h > @@ -271,6 +271,10 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s > > #endif /* __ASSEMBLY__ */ > > +#ifndef __optimize > +# define __optimize(level) > +#endif > + > /* Compile time object size, -1 for unknown */ > #ifndef __compiletime_object_size > # define __compiletime_object_size(obj) -1 > -- > 2.7.4 >