@@ -463,6 +463,7 @@ static inline int is_scalar_type(struct symbol *type)
case SYM_BITFIELD:
case SYM_PTR:
case SYM_RESTRICT: // OK, always integer types
+ case SYM_FOULED: // idem
return 1;
default:
break;
@@ -483,6 +484,7 @@ static inline bool is_integral_type(struct symbol *type)
case SYM_ENUM:
case SYM_PTR:
case SYM_RESTRICT: // OK, always integer types
+ case SYM_FOULED: // idem
return 1;
default:
break;
new file mode 100644
@@ -0,0 +1,13 @@
+#define __bitwise __attribute__((bitwise))
+
+typedef unsigned short __bitwise __be16;
+
+static void foo(__be16 x)
+{
+ if (~x)
+ ;
+}
+
+/*
+ * check-name: foul-scalar
+ */
is_scalar_type() accept SYM_RESTRICT but not SYM_FOULED but both are for integer types (and only for them). So, let it accept SYM_FOULED too. Same for is_integral_type(). Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com> --- symbol.h | 2 ++ validation/foul-scalar.c | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 validation/foul-scalar.c