simplify-rtx.c (simplify_relational_operation): Don't simplify address == constant into address + -constant == 0.

* simplify-rtx.c (simplify_relational_operation): Don't
	simplify address == constant into address + -constant == 0.

	* gcc.dg/20040123-1.c: New test.

From-SVN: r76490
This commit is contained in:
Jakub Jelinek 2004-01-24 12:01:29 +01:00 committed by Jakub Jelinek
parent a515305612
commit 5473cfa7fd
4 changed files with 23 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2004-01-24 Jakub Jelinek <jakub@redhat.com>
* simplify-rtx.c (simplify_relational_operation): Don't
simplify address == constant into address + -constant == 0.
2004-01-24 Kazu Hirata <kazu@cs.umass.edu>
* gcc.c (process_command): Don't internationalize the

View File

@ -2530,6 +2530,8 @@ simplify_relational_operation (enum rtx_code code, enum machine_mode mode,
&& ! ((GET_CODE (op0) == REG || GET_CODE (trueop0) == CONST_INT)
&& (GET_CODE (op1) == REG || GET_CODE (trueop1) == CONST_INT))
&& 0 != (tem = simplify_binary_operation (MINUS, mode, op0, op1))
/* We cannot do this for == or != if tem is a nonzero address. */
&& ((code != EQ && code != NE) || ! nonzero_address_p (tem))
&& code != GTU && code != GEU && code != LTU && code != LEU)
return simplify_relational_operation (signed_condition (code),
mode, tem, const0_rtx);

View File

@ -1,3 +1,7 @@
2004-01-24 Jakub Jelinek <jakub@redhat.com>
* gcc.dg/20040123-1.c: New test.
2004-01-23 Zack Weinberg <zack@codesourcery.com>
* gcc.dg/builtins-30.c: Move dg-warning marks to the proper lines.

View File

@ -0,0 +1,12 @@
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler "abort" } } */
extern void abort (void);
extern char a[];
void foo (void)
{
if ((void *) a == (void *) 0x4000UL)
abort ();
}