re PR tree-optimization/48717 (integer wrong code bug)
PR tree-optimization/48717 * tree-ssa-forwprop.c (associate_plusminus): For A + ~A and ~A + A optimizations use build_int_cst_type instead of build_int_cst. * gcc.c-torture/execute/pr48717.c: New test. From-SVN: r172868
This commit is contained in:
parent
1d284ec5c8
commit
93dfac24ad
4 changed files with 39 additions and 2 deletions
|
@ -1,3 +1,9 @@
|
|||
2011-04-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/48717
|
||||
* tree-ssa-forwprop.c (associate_plusminus): For A + ~A and
|
||||
~A + A optimizations use build_int_cst_type instead of build_int_cst.
|
||||
|
||||
2011-04-22 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/48723
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2011-04-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/48717
|
||||
* gcc.c-torture/execute/pr48717.c: New test.
|
||||
|
||||
2011-04-22 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/48723
|
||||
|
|
26
gcc/testsuite/gcc.c-torture/execute/pr48717.c
Normal file
26
gcc/testsuite/gcc.c-torture/execute/pr48717.c
Normal file
|
@ -0,0 +1,26 @@
|
|||
/* PR tree-optimization/48717 */
|
||||
|
||||
extern void abort (void);
|
||||
|
||||
int v = 1, w;
|
||||
|
||||
unsigned short
|
||||
foo (unsigned short x, unsigned short y)
|
||||
{
|
||||
return x + y;
|
||||
}
|
||||
|
||||
void
|
||||
bar (void)
|
||||
{
|
||||
v = foo (~w, w);
|
||||
}
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
bar ();
|
||||
if (v != (unsigned short) -1)
|
||||
abort ();
|
||||
return 0;
|
||||
}
|
|
@ -1815,7 +1815,7 @@ associate_plusminus (gimple stmt)
|
|||
{
|
||||
/* ~A + A -> -1. */
|
||||
code = INTEGER_CST;
|
||||
rhs1 = build_int_cst (TREE_TYPE (rhs2), -1);
|
||||
rhs1 = build_int_cst_type (TREE_TYPE (rhs2), -1);
|
||||
rhs2 = NULL_TREE;
|
||||
gimple_assign_set_rhs_with_ops (&gsi, code, rhs1, NULL_TREE);
|
||||
gcc_assert (gsi_stmt (gsi) == stmt);
|
||||
|
@ -1915,7 +1915,7 @@ associate_plusminus (gimple stmt)
|
|||
{
|
||||
/* A + ~A -> -1. */
|
||||
code = INTEGER_CST;
|
||||
rhs1 = build_int_cst (TREE_TYPE (rhs1), -1);
|
||||
rhs1 = build_int_cst_type (TREE_TYPE (rhs1), -1);
|
||||
rhs2 = NULL_TREE;
|
||||
gimple_assign_set_rhs_with_ops (&gsi, code, rhs1, NULL_TREE);
|
||||
gcc_assert (gsi_stmt (gsi) == stmt);
|
||||
|
|
Loading…
Add table
Reference in a new issue