]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR tree-optimization/15826 - don't use "if" to extract a single bit
authorMartin Sebor <msebor@redhat.com>
Fri, 26 Feb 2016 23:24:29 +0000 (23:24 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Fri, 26 Feb 2016 23:24:29 +0000 (16:24 -0700)
PR tree-optimization/15826 - don't use "if" to extract a single bit
bit-field
2016-02-26  Martin Sebor  <msebor@redhat.com>

        PR tree-optimization/15826
        * gcc.dg/tree-ssa/pr15826.c: New test.

From-SVN: r233771

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/pr15826.c [new file with mode: 0644]

index 65ee2281c29d60e9b5871cd80e9a76c8f4be6369..f5d49d07d704115cdf105adcd9f086c90aea32b9 100644 (file)
@@ -1,3 +1,8 @@
+2016-02-26  Martin Sebor  <msebor@redhat.com>
+
+       PR tree-optimization/15826
+       * gcc.dg/tree-ssa/pr15826.c: New test.
+
 2016-02-26  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/69969
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr15826.c b/gcc/testsuite/gcc.dg/tree-ssa/pr15826.c
new file mode 100644 (file)
index 0000000..99ac0e2
--- /dev/null
@@ -0,0 +1,36 @@
+/* PR tree-optimization/15826 - don't use "if" to extract a single bit
+   bit-field */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+struct s {
+  unsigned int bit : 1;
+};
+
+unsigned int
+foo (struct s *p)
+{
+  if (p->bit)
+    return 1;
+  else
+    return 0;
+}
+
+unsigned int
+bar (struct s *p)
+{
+  return (unsigned int) (p->bit);
+}
+
+unsigned int
+andrew (struct s *p)
+{
+  int i;
+  if (p->bit)
+    i = 1;
+  else
+    i = 0;
+  return i;
+}
+
+/* { dg-final { scan-tree-dump-times " & | goto " 0 "optimized" } } */