2016-11-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/78228
* tree-ssa-phiopt.c (abs_replacement): Avoid introducing
undefined behavior.
* gcc.dg/tree-ssa/phi-opt-15.c: New testcase.
From-SVN: r241899
+2016-11-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/78228
+ * tree-ssa-phiopt.c (abs_replacement): Avoid introducing
+ undefined behavior.
+
2016-11-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/77822
+2016-11-07 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/78228
+ * gcc.dg/tree-ssa/phi-opt-15.c: New testcase.
+
2016-11-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
PR target/77822
--- /dev/null
+/* { dg-do compile } */
+/* { dg-options "-O2 -fdump-tree-optimized" } */
+
+int
+foo (int i)
+{
+ if (i > 0)
+ i = -i;
+ return i;
+}
+
+/* { dg-final { scan-tree-dump-not "ABS" "optimized" } } */
else
negate = false;
+ /* If the code negates only iff positive then make sure to not
+ introduce undefined behavior when negating or computing the absolute.
+ ??? We could use range info if present to check for arg1 == INT_MIN. */
+ if (negate
+ && (ANY_INTEGRAL_TYPE_P (TREE_TYPE (arg1))
+ && ! TYPE_OVERFLOW_WRAPS (TREE_TYPE (arg1))))
+ return false;
+
result = duplicate_ssa_name (result, NULL);
if (negate)