mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-22 19:41:06 +08:00
re PR middle-end/27743 (Wrong code for ((unsigned) ((a) >> 2)) >> 15)
2006-05-25 Richard Guenther <rguenther@suse.de> PR middle-end/27743 * fold-const.c (fold_binary): Do not look at the stripped op0 for (a OP c1) OP c2 to a OP (c1+c2) shift optimization. * gcc.dg/torture/pr27743.c: New testcase. From-SVN: r114112
This commit is contained in:
parent
466a0c362f
commit
2d60e929a1
@ -1,3 +1,9 @@
|
||||
2006-05-25 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/27743
|
||||
* fold-const.c (fold_binary): Do not look at the stripped
|
||||
op0 for (a OP c1) OP c2 to a OP (c1+c2) shift optimization.
|
||||
|
||||
2006-05-25 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* tree-vrp.c (extract_range_from_assert): Set the range to VARYING
|
||||
|
@ -9786,7 +9786,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
|
||||
return NULL_TREE;
|
||||
|
||||
/* Turn (a OP c1) OP c2 into a OP (c1+c2). */
|
||||
if (TREE_CODE (arg0) == code && host_integerp (arg1, false)
|
||||
if (TREE_CODE (op0) == code && host_integerp (arg1, false)
|
||||
&& TREE_INT_CST_LOW (arg1) < TYPE_PRECISION (type)
|
||||
&& host_integerp (TREE_OPERAND (arg0, 1), false)
|
||||
&& TREE_INT_CST_LOW (TREE_OPERAND (arg0, 1)) < TYPE_PRECISION (type))
|
||||
|
@ -1,3 +1,8 @@
|
||||
2006-05-25 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/27743
|
||||
* gcc.dg/torture/pr27743.c: New testcase.
|
||||
|
||||
2006-05-25 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* gfortran.dg/large_real_kind_form_io_2.f90: UnXFAIL on SPARC/Solaris.
|
||||
|
15
gcc/testsuite/gcc.dg/torture/pr27743.c
Normal file
15
gcc/testsuite/gcc.dg/torture/pr27743.c
Normal file
@ -0,0 +1,15 @@
|
||||
/* { dg-do run } */
|
||||
|
||||
extern void abort(void);
|
||||
|
||||
int bar(int a)
|
||||
{
|
||||
return ((unsigned) ((a) >> 2)) >> 15;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
if (bar (0xffff3000) != 0x1ffff)
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user