From: Richard Biener Date: Thu, 24 Nov 2016 09:45:01 +0000 (+0000) Subject: re PR middle-end/71762 (~X & Y to X < Y doesn't work for uninitialized values) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c14988fe8db29759c6b82fa0947d06b978bc21c3;p=gcc.git re PR middle-end/71762 (~X & Y to X < Y doesn't work for uninitialized values) 2016-11-23 Richard Biener 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 --- diff --git a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c index cc4f1f48aec..aa70678f4cd 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c @@ -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 *-*-* } } } */