+2019-05-15 Li Jia He <helijia@linux.ibm.com>
+
+ Backport from mainline.
+ 2019-05-07 Li Jia He <helijia@linux.ibm.com>
+
+ * tree-ssa-phiopt.c (two_value_replacement): Fix a typo in parameter
+ detection.
+
2019-05-14 Martin Liska <mliska@suse.cz>
Backport from mainline
+2019-05-15 Li Jia He <helijia@linux.ibm.com>
+
+ Backport from mainline.
+ 2019-05-07 Li Jia He <helijia@linux.ibm.com>
+
+ * gcc.dg/tree-ssa/pr37508.c: Add the no-ssa-phiopt option to skip phi
+ optimization.
+ * gcc.dg/tree-ssa/pr88676-2.c: New testcase.
+
2019-05-14 Iain Sandoe <iain@sandoe.co.uk>
Backport from mainline.
/* { dg-do compile } */
-/* { dg-options "-O2 -fno-tree-fre -fdump-tree-vrp1" } */
+/* { dg-options "-O2 -fno-ssa-phiopt -fno-tree-fre -fdump-tree-vrp1" } */
struct foo1 {
int i:1;
{
if (x->i == 0)
return 1;
- else if (x->i == -1) /* This test is already folded to false by ccp1. */
+ else if (x->i == -1) /* This test is already optimized by ccp1 or phiopt1. */
return 1;
return 0;
}
{
if (x->i == 0)
return 1;
- else if (x->i == 1) /* This test is already folded to false by fold. */
+ else if (x->i == 1) /* This test is already optimized by ccp1 or phiopt1. */
return 1;
return 0;
}
--- /dev/null
+/* PR tree-optimization/88676 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-phiopt1" } */
+/* { dg-final { scan-tree-dump-not " = PHI <" "phiopt1" { target le } } } */
+
+struct foo1 {
+ int i:1;
+};
+struct foo2 {
+ unsigned i:1;
+};
+
+int test1 (struct foo1 *x)
+{
+ if (x->i == 0)
+ return 1;
+ else if (x->i == 1)
+ return 1;
+ return 0;
+}
+
+int test2 (struct foo2 *x)
+{
+ if (x->i == 0)
+ return 1;
+ else if (x->i == -1)
+ return 1;
+ return 0;
+}
+
|| TREE_CODE (arg1) != INTEGER_CST
|| (tree_int_cst_lt (arg0, arg1)
? wi::to_widest (arg0) + 1 != wi::to_widest (arg1)
- : wi::to_widest (arg1) + 1 != wi::to_widest (arg1)))
+ : wi::to_widest (arg1) + 1 != wi::to_widest (arg0)))
return false;
if (!empty_block_p (middle_bb))