combine.c (force_to_mode): Only replace with (not Y) if all bits in fuller_mask (not just mask) are set in C.
* combine.c (force_to_mode): Only replace with (not Y) if all bits in fuller_mask (not just mask) are set in C. * gcc.c-torture/execute/20021118-3.c: New test. From-SVN: r59295
This commit is contained in:
parent
13b42735b6
commit
bc02f8d3f7
@ -1,3 +1,8 @@
|
||||
2002-11-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* combine.c (force_to_mode): Only replace with (not Y) if all bits in fuller_mask
|
||||
(not just mask) are set in C.
|
||||
|
||||
2002-11-19 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* loop.c (record_giv): Initialize not_replaceable.
|
||||
|
@ -6978,10 +6978,10 @@ force_to_mode (x, mode, mask, reg, just_select)
|
||||
return force_to_mode (x, mode, mask, reg, next_select);
|
||||
}
|
||||
|
||||
/* Similarly, if C contains every bit in the mask, then we may
|
||||
/* Similarly, if C contains every bit in the fuller_mask, then we may
|
||||
replace with (not Y). */
|
||||
if (GET_CODE (XEXP (x, 0)) == CONST_INT
|
||||
&& ((INTVAL (XEXP (x, 0)) | (HOST_WIDE_INT) mask)
|
||||
&& ((INTVAL (XEXP (x, 0)) | (HOST_WIDE_INT) fuller_mask)
|
||||
== INTVAL (XEXP (x, 0))))
|
||||
{
|
||||
x = simplify_gen_unary (NOT, GET_MODE (x),
|
||||
|
@ -1,3 +1,7 @@
|
||||
2002-11-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* gcc.c-torture/execute/20021118-3.c: New test.
|
||||
|
||||
2002-11-19 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* gcc.c-torture/compile/20021119-1.c: New test.
|
||||
|
18
gcc/testsuite/gcc.c-torture/execute/20021118-3.c
Normal file
18
gcc/testsuite/gcc.c-torture/execute/20021118-3.c
Normal file
@ -0,0 +1,18 @@
|
||||
extern void abort (void);
|
||||
extern void exit (int);
|
||||
|
||||
int
|
||||
foo (int x)
|
||||
{
|
||||
if (x == -2 || -x - 100 >= 0)
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
foo (-3);
|
||||
foo (-99);
|
||||
exit (0);
|
||||
}
|
Loading…
Reference in New Issue
Block a user