forked from Minki/linux
checkpatch: warn when using gcc's binary constant ("0b") extension
The gcc extension for binary constants that start with 0b is only supported with gcc version 4.3 or higher. The kernel can still be compiled with earlier versions of gcc, so have checkpatch emit a warning for these constants. Restructure checkpatch's constant finding code a bit to support finding these binary constants. Signed-off-by: Joe Perches <joe@perches.com> Suggested-by: Andrew Morton <akpm@linux-foundation.org> Cc: Andy Whitcroft <apw@canonical.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
be79794bc1
commit
95e2c6023b
@ -230,11 +230,15 @@ our $Inline = qr{inline|__always_inline|noinline};
|
||||
our $Member = qr{->$Ident|\.$Ident|\[[^]]*\]};
|
||||
our $Lval = qr{$Ident(?:$Member)*};
|
||||
|
||||
our $Int_type = qr{(?i)llu|ull|ll|lu|ul|l|u};
|
||||
our $Binary = qr{(?i)0b[01]+$Int_type?};
|
||||
our $Hex = qr{(?i)0x[0-9a-f]+$Int_type?};
|
||||
our $Int = qr{[0-9]+$Int_type?};
|
||||
our $Float_hex = qr{(?i)0x[0-9a-f]+p-?[0-9]+[fl]?};
|
||||
our $Float_dec = qr{(?i)(?:[0-9]+\.[0-9]*|[0-9]*\.[0-9]+)(?:e-?[0-9]+)?[fl]?};
|
||||
our $Float_int = qr{(?i)[0-9]+e-?[0-9]+[fl]?};
|
||||
our $Float = qr{$Float_hex|$Float_dec|$Float_int};
|
||||
our $Constant = qr{$Float|(?i)(?:0x[0-9a-f]+|[0-9]+)[ul]*};
|
||||
our $Constant = qr{$Float|$Binary|$Hex|$Int};
|
||||
our $Assignment = qr{\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=};
|
||||
our $Compare = qr{<=|>=|==|!=|<|>};
|
||||
our $Operators = qr{
|
||||
@ -2934,9 +2938,17 @@ sub process {
|
||||
}
|
||||
}
|
||||
|
||||
#CamelCase
|
||||
#Specific variable tests
|
||||
while ($line =~ m{($Constant|$Lval)}g) {
|
||||
my $var = $1;
|
||||
|
||||
#gcc binary extension
|
||||
if ($var =~ /^$Binary$/) {
|
||||
WARN("GCC_BINARY_CONSTANT",
|
||||
"Avoid gcc v4.3+ binary constant extension: <$var>\n" . $herecurr);
|
||||
}
|
||||
|
||||
#CamelCase
|
||||
if ($var !~ /$Constant/ &&
|
||||
$var =~ /[A-Z][a-z]|[a-z][A-Z]/ &&
|
||||
$var !~ /"^(?:Clear|Set|TestClear|TestSet|)Page[A-Z]/ &&
|
||||
|
Loading…
Reference in New Issue
Block a user