Commit 2e951384 by Jakub Jelinek Committed by Jakub Jelinek

simplify-rtx.c (simplify_plus_minus): Bump n_ops for NOT.

	* simplify-rtx.c (simplify_plus_minus): Bump n_ops for NOT.
	Don't allow -1 - x -> ~x simplifications in the first pass.

	* gcc.c-torture/execute/20020107-1.c: New test.

From-SVN: r48614
parent 15eb1e43
2002-01-07 Jakub Jelinek <jakub@redhat.com>
* simplify-rtx.c (simplify_plus_minus): Bump n_ops for NOT.
Don't allow -1 - x -> ~x simplifications in the first pass.
2002-01-07 Aldy Hernandez <aldyh@redhat.com>
* rs6000.c (altivec_expand_ternop_builtin): Don't die on invalid
......
......@@ -1800,7 +1800,7 @@ simplify_plus_minus (code, mode, op0, op1)
if (n_ops != 7)
{
ops[n_ops].op = constm1_rtx;
ops[n_ops].neg = this_neg;
ops[n_ops++].neg = this_neg;
ops[i].op = XEXP (this_op, 0);
ops[i].neg = !this_neg;
changed = 1;
......@@ -1865,7 +1865,13 @@ simplify_plus_minus (code, mode, op0, op1)
&& ! (GET_CODE (tem) == CONST
&& GET_CODE (XEXP (tem, 0)) == ncode
&& XEXP (XEXP (tem, 0), 0) == lhs
&& XEXP (XEXP (tem, 0), 1) == rhs))
&& XEXP (XEXP (tem, 0), 1) == rhs)
/* Don't allow -x + -1 -> ~x simplifications in the
first pass. This allows us the chance to combine
the -1 with other constants. */
&& ! (first
&& GET_CODE (tem) == NOT
&& XEXP (tem, 0) == rhs))
{
lneg &= rneg;
if (GET_CODE (tem) == NEG)
......
2002-01-07 Jakub Jelinek <jakub@redhat.com>
* gcc.c-torture/execute/20020107-1.c: New test.
2002-01-06 Craig Rodrigues <rodrigc@gcc.gnu.org>
PR c/5279
......
/* This testcase failed because - 1 - buf was simplified into ~buf and when
later expanding it back into - buf + -1, -1 got lost. */
extern void abort (void);
extern void exit (int);
static void
bar (int x)
{
if (!x)
abort ();
}
char buf[10];
inline char *
foo (char *tmp)
{
asm ("" : "=r" (tmp) : "0" (tmp));
return tmp + 2;
}
int
main (void)
{
bar ((foo (buf) - 1 - buf) == 1);
exit (0);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment