re PR middle-end/71762 (~X & Y to X < Y doesn't work for uninitialized values)
authorRichard Biener <rguenth@gcc.gnu.org>
Thu, 24 Nov 2016 09:45:01 +0000 (09:45 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 24 Nov 2016 09:45:01 +0000 (09:45 +0000)
2016-11-23  Richard Biener  <rguenther@suse.de>

PR middle-end/71762
* match.pd ((~X & Y) -> X < Y, (X & ~Y) -> Y < X,
(~X | Y) -> X <= Y, (X | ~Y) -> Y <= X): Remove.

* gcc.dg/torture/pr71762-1.c: New testcase.
* gcc.dg/torture/pr71762-2.c: Likewise.
* gcc.dg/torture/pr71762-3.c: Likewise.
* gcc.dg/tree-ssa/forwprop-28.c: XFAIL.

From-SVN: r242822

gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c

index cc4f1f4..aa70678 100644 (file)
@@ -83,6 +83,8 @@ test_8 (int code)
    to a ordered compare.  But the transform does not trigger if we transform
    the negated code == 22 compare to code != 22 first.  It turns out if
    we do that we even generate better code on x86 at least.  */
+/* ???  As PR71762 notices this transform causes wrong-code issues in RTL
+   with one uninitialized operand, thus it has been disabled.  */
 
-/* { dg-final { scan-tree-dump-times "simplified to if \\\(\[^ ]* \[<>\]" 4 "forwprop1"} } */
+/* { dg-final { scan-tree-dump-times "simplified to if \\\(\[^ ]* \[<>\]" 4 "forwprop1" { xfail *-*-* } } } */