|
@@ -433,6 +433,28 @@ our @typeList = (
|
|
|
qr{${Ident}_handler_fn},
|
|
|
@typeListMisordered,
|
|
|
);
|
|
|
+
|
|
|
+our $C90_int_types = qr{(?x:
|
|
|
+ long\s+long\s+int\s+(?:un)?signed|
|
|
|
+ long\s+long\s+(?:un)?signed\s+int|
|
|
|
+ long\s+long\s+(?:un)?signed|
|
|
|
+ (?:(?:un)?signed\s+)?long\s+long\s+int|
|
|
|
+ (?:(?:un)?signed\s+)?long\s+long|
|
|
|
+ int\s+long\s+long\s+(?:un)?signed|
|
|
|
+ int\s+(?:(?:un)?signed\s+)?long\s+long|
|
|
|
+
|
|
|
+ long\s+int\s+(?:un)?signed|
|
|
|
+ long\s+(?:un)?signed\s+int|
|
|
|
+ long\s+(?:un)?signed|
|
|
|
+ (?:(?:un)?signed\s+)?long\s+int|
|
|
|
+ (?:(?:un)?signed\s+)?long|
|
|
|
+ int\s+long\s+(?:un)?signed|
|
|
|
+ int\s+(?:(?:un)?signed\s+)?long|
|
|
|
+
|
|
|
+ int\s+(?:un)?signed|
|
|
|
+ (?:(?:un)?signed\s+)?int
|
|
|
+)};
|
|
|
+
|
|
|
our @typeListFile = ();
|
|
|
our @typeListWithAttr = (
|
|
|
@typeList,
|
|
@@ -5272,6 +5294,26 @@ sub process {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+# check for cast of C90 native int or longer types constants
|
|
|
+ if ($line =~ /(\(\s*$C90_int_types\s*\)\s*)($Constant)\b/) {
|
|
|
+ my $cast = $1;
|
|
|
+ my $const = $2;
|
|
|
+ if (WARN("TYPECAST_INT_CONSTANT",
|
|
|
+ "Unnecessary typecast of c90 int constant\n" . $herecurr) &&
|
|
|
+ $fix) {
|
|
|
+ my $suffix = "";
|
|
|
+ my $newconst = $const;
|
|
|
+ $newconst =~ s/${Int_type}$//;
|
|
|
+ $suffix .= 'U' if ($cast =~ /\bunsigned\b/);
|
|
|
+ if ($cast =~ /\blong\s+long\b/) {
|
|
|
+ $suffix .= 'LL';
|
|
|
+ } elsif ($cast =~ /\blong\b/) {
|
|
|
+ $suffix .= 'L';
|
|
|
+ }
|
|
|
+ $fixed[$fixlinenr] =~ s/\Q$cast\E$const\b/$newconst$suffix/;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
# check for sizeof(&)
|
|
|
if ($line =~ /\bsizeof\s*\(\s*\&/) {
|
|
|
WARN("SIZEOF_ADDRESS",
|