Add 1bit bit-field testcases.
authorAndrew Pinski <apinski@marvell.com>
Thu, 2 Jan 2020 20:27:25 +0000 (20:27 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Thu, 2 Jan 2020 20:27:25 +0000 (12:27 -0800)
2020-01-02  Andrew Pinski  <apinski@marvell.com>

        * gcc.c-torture/execute/bitfld-8.c: New testcase.
        * gcc.c-torture/execute/bitfld-9.c: New testcase.

From-SVN: r279846

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/bitfld-8.c [new file with mode: 0644]
gcc/testsuite/gcc.c-torture/execute/bitfld-9.c [new file with mode: 0644]

index 7c959f4ecb0289d6c15833a863fe819dec27fd54..e0807404aee9f88ccf99f7487119158dc65a17df 100644 (file)
@@ -1,3 +1,8 @@
+2020-01-02  Andrew Pinski  <apinski@marvell.com>
+
+       * gcc.c-torture/execute/bitfld-8.c: New testcase.
+       * gcc.c-torture/execute/bitfld-9.c: New testcase.
+
 2020-01-02  Jakub Jelinek  <jakub@redhat.com>
 
        PR c/90677
diff --git a/gcc/testsuite/gcc.c-torture/execute/bitfld-8.c b/gcc/testsuite/gcc.c-torture/execute/bitfld-8.c
new file mode 100644 (file)
index 0000000..0a6f7c7
--- /dev/null
@@ -0,0 +1,63 @@
+struct mouse_button_str {
+        unsigned char left      : 1;
+        unsigned char right     : 1;
+        unsigned char middle    : 1;
+        } button;
+
+static char fct (struct mouse_button_str newbutton) __attribute__ ((__noipa__));
+static char
+fct (struct mouse_button_str newbutton)
+{
+  char l = newbutton.left;
+  char r = newbutton.right;
+  char m = newbutton.middle;
+       return l || r || m;
+}
+
+int main(void)
+{
+  struct mouse_button_str newbutton1;
+  newbutton1.left = 1;
+  newbutton1.middle = 1;
+  newbutton1.right = 1;
+  if (!fct (newbutton1))
+    __builtin_abort ();
+
+  newbutton1.left = 0;
+  newbutton1.middle = 1;
+  newbutton1.right = 1;
+  if (!fct (newbutton1))
+    __builtin_abort ();
+  newbutton1.left = 1;
+  newbutton1.middle = 0;
+  newbutton1.right = 1;
+  if (!fct (newbutton1))
+    __builtin_abort ();
+  newbutton1.left = 1;
+  newbutton1.middle = 1;
+  newbutton1.right = 0;
+  if (!fct (newbutton1))
+    __builtin_abort ();
+
+
+  newbutton1.left = 1;
+  newbutton1.middle = 0;
+  newbutton1.right = 0;
+  if (!fct (newbutton1))
+    __builtin_abort ();
+  newbutton1.left = 0;
+  newbutton1.middle = 1;
+  newbutton1.right = 0;
+  if (!fct (newbutton1))
+    __builtin_abort ();
+  newbutton1.left = 0;
+  newbutton1.middle = 0;
+  newbutton1.right = 1;
+  if (!fct (newbutton1))
+    __builtin_abort ();
+  newbutton1.left = 0;
+  newbutton1.middle = 0;
+  newbutton1.right = 0;
+  if (fct (newbutton1))
+    __builtin_abort ();
+}
\ No newline at end of file
diff --git a/gcc/testsuite/gcc.c-torture/execute/bitfld-9.c b/gcc/testsuite/gcc.c-torture/execute/bitfld-9.c
new file mode 100644 (file)
index 0000000..4353a56
--- /dev/null
@@ -0,0 +1,63 @@
+struct mouse_button_str {
+        unsigned char left      : 1;
+        unsigned char right     : 1;
+        unsigned char middle    : 1;
+        } button;
+
+static char fct (struct mouse_button_str newbutton) __attribute__ ((__noipa__));
+static char
+fct (struct mouse_button_str newbutton)
+{
+  char l = newbutton.left;
+  char r = newbutton.right;
+  char m = newbutton.middle;
+  return l && r && m;
+}
+
+int main(void)
+{
+  struct mouse_button_str newbutton1;
+  newbutton1.left = 1;
+  newbutton1.middle = 1;
+  newbutton1.right = 1;
+  if (!fct (newbutton1))
+    __builtin_abort ();
+
+  newbutton1.left = 0;
+  newbutton1.middle = 1;
+  newbutton1.right = 1;
+  if (fct (newbutton1))
+    __builtin_abort ();
+  newbutton1.left = 1;
+  newbutton1.middle = 0;
+  newbutton1.right = 1;
+  if (fct (newbutton1))
+    __builtin_abort ();
+  newbutton1.left = 1;
+  newbutton1.middle = 1;
+  newbutton1.right = 0;
+  if (fct (newbutton1))
+    __builtin_abort ();
+
+
+  newbutton1.left = 1;
+  newbutton1.middle = 0;
+  newbutton1.right = 0;
+  if (fct (newbutton1))
+    __builtin_abort ();
+  newbutton1.left = 0;
+  newbutton1.middle = 1;
+  newbutton1.right = 0;
+  if (fct (newbutton1))
+    __builtin_abort ();
+  newbutton1.left = 0;
+  newbutton1.middle = 0;
+  newbutton1.right = 1;
+  if (fct (newbutton1))
+    __builtin_abort ();
+  newbutton1.left = 0;
+  newbutton1.middle = 0;
+  newbutton1.right = 0;
+  if (fct (newbutton1))
+    __builtin_abort ();
+}