Hi Linus,

A proposed GCC asm extention:

  https://gcc.gnu.org/ml/gcc-patches/2018-10/msg01931.html

allows adding the "inline" keyword to 'asm ("")' statements. The
problem is that we're possibly redefining "inline" to
"inline __attribute__((__always_inline__))" which makes the proposed:

  asm volatile inline ("")

not compile.

However, since we've been depricating the use of the alternative
inline keywords: "__inline__" and "__inline", and there are only a
'few' uses left of them in the tree:

  $ git grep -e "\<__inline__\>" | wc -l
  487
  $ git grep -e "\<__inline\>" | wc -l
  56
  $ git grep -e "\<inline\>" | wc -l
  69957

let's finish them off now.

Therefore I'm proposing to run:

  git grep -l "\<__inline\(\|__\)\>" | while read file
  do
        sed -i -e 's/\<__inline\(\|__\)\>/inline/g' $file
  done

On your current tree, and apply the below fixup patch on top of that
result.

This would then allow us to do something like (+- GCC feature tests):

  #define asm_volatile(stmt...) asm volatile __inline__(stmt)

once that GCC patch lands.

Cc: Nadav Amit <na...@vmware.com>
Cc: Joe Perches <j...@perches.com>
Cc: Miguel Ojeda <miguel.ojeda.sando...@gmail.com>
Cc: Segher Boessenkool <seg...@kernel.crashing.org>
Signed-off-by: Peter Zijlstra (Intel) <pet...@infradead.org>
---
 include/linux/compiler_types.h |    3 ---
 scripts/checkpatch.pl          |   12 ++++++------
 scripts/genksyms/keywords.c    |    2 --
 scripts/kernel-doc             |    2 --
 4 files changed, 6 insertions(+), 13 deletions(-)

--- a/include/linux/compiler_types.h
+++ b/include/linux/compiler_types.h
@@ -202,9 +202,6 @@ struct ftrace_likely_data {
        __maybe_unused notrace
 #endif
 
-#define inline inline
-#define inline   inline
-
 /*
  * Rather then using noinline to prevent stack consumption, use
  * noinline_for_stack instead.  For documentation reasons.
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -389,7 +389,7 @@ our $Attribute      = qr{
                        __weak
                  }x;
 our $Modifier;
-our $Inline    = qr{inline|__always_inline|noinline|inline|inline};
+our $Inline    = qr{inline|__always_inline|noinline};
 our $Member    = qr{->$Ident|\.$Ident|\[[^]]*\]};
 our $Lval      = qr{$Ident(?:$Member)*};
 
@@ -5771,13 +5771,13 @@ sub process {
                              "inline keyword should sit between storage class 
and type\n" . $herecurr);
                }
 
-# Check for inline and inline, prefer inline
+# Check for __inline__ and __inline, prefer inline
                if ($realfile !~ m@\binclude/uapi/@ &&
-                   $line =~ /\b(inline|inline)\b/) {
-                       if (WARN("INLINE",
-                                "plain inline is preferred over $1\n" . 
$herecurr) &&
+                   $line =~ /\b(__inline__|__inline)\b/) {
+                       if (ERROR("INLINE",
+                                 "plain inline is preferred over $1\n" . 
$herecurr) &&
                            $fix) {
-                               $fixed[$fixlinenr] =~ 
s/\b(inline|inline)\b/inline/;
+                               $fixed[$fixlinenr] =~ 
s/\b(__inline__|__inline)\b/inline/;
 
                        }
                }
--- a/scripts/genksyms/keywords.c
+++ b/scripts/genksyms/keywords.c
@@ -14,8 +14,6 @@ static struct resword {
        { "__const", CONST_KEYW },
        { "__const__", CONST_KEYW },
        { "__extension__", EXTENSION_KEYW },
-       { "inline", INLINE_KEYW },
-       { "inline", INLINE_KEYW },
        { "__signed", SIGNED_KEYW },
        { "__signed__", SIGNED_KEYW },
        { "__typeof", TYPEOF_KEYW },
--- a/scripts/kernel-doc
+++ b/scripts/kernel-doc
@@ -1569,8 +1569,6 @@ sub dump_function($$) {
     $prototype =~ s/^extern +//;
     $prototype =~ s/^asmlinkage +//;
     $prototype =~ s/^inline +//;
-    $prototype =~ s/^inline +//;
-    $prototype =~ s/^inline +//;
     $prototype =~ s/^__always_inline +//;
     $prototype =~ s/^noinline +//;
     $prototype =~ s/__init +//;

Reply via email to