+2014-05-17 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/61140
+ PR tree-optimization/61150
+ PR tree-optimization/61197
+ * tree-ssa-phiopt.c (value_replacement): Punt on multiple phis.
+
2014-05-17 Uros Bizjak <ubizjak@gmail.com>
* doc/invoke.texi (free): Mention Alpha. Also enabled at -Os.
+2014-05-17 Marc Glisse <marc.glisse@inria.fr>
+
+ PR tree-optimization/61140
+ PR tree-optimization/61150
+ PR tree-optimization/61197
+ * gcc.dg/tree-ssa/pr61140.c: New file.
+ * gcc.dg/tree-ssa/pr61150.c: New file.
+ * gcc.dg/tree-ssa/pr61197.c: New file.
+
2014-05-17 Uros Bizjak <ubizjak@gmail.com>
* g++.dg/pr60969.C: Compile for all ilp32 x86 targets.
--- /dev/null
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+
+int a[1] = { 1 }, b = 1, c;
+
+int
+main ()
+{
+ for (; c < 1; c++)
+ if (a[0])
+ {
+ a[0] &= 1;
+ b = 0;
+ }
+ if (b)
+ __builtin_abort ();
+ return 0;
+}
--- /dev/null
+/* { dg-do run } */
+/* { dg-options "-O3" } */
+
+int a, b, c, d = 1;
+
+int
+main ()
+{
+ int e = d;
+ for (b = 0; b < 5; b++)
+ {
+ for (a = 0; a < 1; a++)
+ {
+ if (e)
+ break;
+ for (c = 0; c < 1; c++)
+ ;
+ }
+ e |= 1;
+ }
+ if (c)
+ __builtin_abort();
+ return 0;
+}
--- /dev/null
+/* { dg-do run } */
+/* { dg-options "-O3" } */
+
+int a, b = 1, *c = &a;
+
+int
+foo ()
+{
+ if (b)
+ b |= 1;
+ else
+ {
+ b = 1;
+ return 0;
+ }
+ return 1;
+}
+
+int
+main ()
+{
+ *c = foo ();
+ if (a != 1)
+ __builtin_abort ();
+ return 0;
+}
&& !POINTER_TYPE_P (TREE_TYPE (arg0))))
return 0;
+ /* Only transform if it removes the condition. */
+ if (!single_non_singleton_phi_for_edges (phi_nodes (gimple_bb (phi)), e0, e1))
+ return 0;
+
/* Size-wise, this is always profitable. */
if (optimize_bb_for_speed_p (cond_bb)
/* The special case is useless if it has a low probability. */