summaryrefslogtreecommitdiff
path: root/usr/src/tools/smatch/src/validation/enum-bitwise-mixed.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/tools/smatch/src/validation/enum-bitwise-mixed.c')
-rw-r--r--usr/src/tools/smatch/src/validation/enum-bitwise-mixed.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/usr/src/tools/smatch/src/validation/enum-bitwise-mixed.c b/usr/src/tools/smatch/src/validation/enum-bitwise-mixed.c
new file mode 100644
index 0000000000..07d77176c6
--- /dev/null
+++ b/usr/src/tools/smatch/src/validation/enum-bitwise-mixed.c
@@ -0,0 +1,29 @@
+#define __bitwise __attribute__((bitwise))
+#define __force __attribute__((force))
+
+typedef long long __bitwise bits;
+
+enum a {
+ AR = (__force bits) 0,
+ AP = 0,
+ AS = (__force bits) 1,
+ AQ = 1,
+};
+_Static_assert(sizeof(AP) == sizeof(int), "is bad?");
+
+enum b {
+ BP = 0,
+ BR = (__force bits) 0,
+ BQ = 1,
+ BS = (__force bits) 1,
+};
+_Static_assert(sizeof(BP) == sizeof(int), "is bad?");
+
+/*
+ * check-name: enum-bitwise-mixed
+ *
+ * check-error-start
+enum-bitwise-mixed.c:8:14: warning: mixed bitwiseness
+enum-bitwise-mixed.c:16:15: warning: mixed bitwiseness
+ * check-error-end
+ */