aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/linear/bitfield-sign-unsigned.c
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-09-16 23:19:19 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-09-16 23:19:19 +0200
commit517177692e00fd36d89f1aac389348c9598bc426 (patch)
tree1b0825895125bac64012c7f1ee28a37712c7184b /validation/linear/bitfield-sign-unsigned.c
parent24bdaac6682c36f5f7878321e8f9eb02c0993572 (diff)
downloadsparse-dev-517177692e00fd36d89f1aac389348c9598bc426.tar.gz
teach sparse about -funsigned-bitfields
Currently, Sparse treats 'plain' bitfields as unsigned. However, this is this is inconsistent with how non-bitfield integers are handled and with how GCC & clang handle bitfields. So, teach sparse about '-funsigned-bitfields' and by default treat these bitfields are signed, like done by GCC & clang and like done for non-bitfield integers. Also, avoid plain bitfields in IR related testcases. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/linear/bitfield-sign-unsigned.c')
-rw-r--r--validation/linear/bitfield-sign-unsigned.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/validation/linear/bitfield-sign-unsigned.c b/validation/linear/bitfield-sign-unsigned.c
new file mode 100644
index 00000000..099edaad
--- /dev/null
+++ b/validation/linear/bitfield-sign-unsigned.c
@@ -0,0 +1,13 @@
+struct s {
+ int f:2;
+};
+
+static int getf(struct s s) { return s.f; }
+
+/*
+ * check-name: bitfield-sign-unsigned
+ * check-command: test-linearize -fdump-ir=linearize -funsigned-bitfields $file
+ *
+ * check-output-ignore
+ * check-output-contains: zext\\.
+ */