]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR middle-end/32964 (union cause inefficient code inside loops)
authorMartin Jambor <mjambor@suse.cz>
Thu, 6 Aug 2009 11:55:30 +0000 (13:55 +0200)
committerMartin Jambor <jamborm@gcc.gnu.org>
Thu, 6 Aug 2009 11:55:30 +0000 (13:55 +0200)
2009-08-06  Martin Jambor  <mjambor@suse.cz>

PR middle-end/32964
* testsuite/gcc.dg/tree-ssa/pr32964.c: New test.

From-SVN: r150523

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

index 2232d5fad6290a2dd0ba14c0d57c32aba3ccd8e7..7d35150a89656b8acde04ce90e34a5b2d24b696f 100644 (file)
@@ -1,3 +1,8 @@
+2009-08-06  Martin Jambor  <mjambor@suse.cz>
+
+       PR middle-end/32964
+       * gcc.dg/tree-ssa/pr32964.c: New test.
+
 2009-08-06  Uros Bizjak  <ubizjak@gmail.com>
            H.J. Lu  <hongjiu.lu@intel.com>
 
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr32964.c b/gcc/testsuite/gcc.dg/tree-ssa/pr32964.c
new file mode 100644 (file)
index 0000000..18e73f9
--- /dev/null
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O1 -fdump-tree-optimized" } */
+
+union A
+{
+ float a;
+};
+
+float t(float a)
+{
+  union A a1, a2, a3;
+  int i;
+
+  a1.a = a;
+  for(i = 0; i<100; i++)
+    {
+      a2 = a1;
+      a2.a += a;
+      a1 = a2;
+  }
+  a3 = a1;
+  return a3.a;
+}
+
+/* { dg-final { scan-tree-dump-times "union" 0 "optimized"} } */
+/* { dg-final { cleanup-tree-dump "optimized" } } */