re PR tree-optimization/22329 (VRP produces mis-matched (non compatible) types in MODIFY_EXPR)
2005-07-08 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/22329 * gcc.dg/pr22329.c: New test. 2005-07-08 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/22329 * tree-ssa-propagate.c (fold_predicate_in): Convert the value to the correct type if we have a MODIFY_EXPR. From-SVN: r101789
This commit is contained in:
parent
3ffa3729c0
commit
52b27f98cf
4 changed files with 28 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2005-07-08 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR tree-opt/22329
|
||||
* tree-ssa-propagate.c (fold_predicate_in): Convert the value
|
||||
to the correct type if we have a MODIFY_EXPR.
|
||||
|
||||
2005-07-08 Kazu Hirata <kazu@codesourcery.com>
|
||||
|
||||
PR tree-optimization/22360
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2005-07-08 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR tree-opt/22329
|
||||
* gcc.dg/pr22329.c: New test.
|
||||
|
||||
2005-07-08 Kazu Hirata <kazu@codesourcery.com>
|
||||
|
||||
PR tree-optimization/20139
|
||||
|
|
9
gcc/testsuite/gcc.dg/pr22329.c
Normal file
9
gcc/testsuite/gcc.dg/pr22329.c
Normal file
|
@ -0,0 +1,9 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
int f(int i)
|
||||
{
|
||||
int k = 0;
|
||||
if (i == 0)
|
||||
k = i == 0;
|
||||
return k;
|
||||
}
|
|
@ -1018,11 +1018,15 @@ static bool
|
|||
fold_predicate_in (tree stmt)
|
||||
{
|
||||
tree *pred_p = NULL;
|
||||
bool modify_expr_p = false;
|
||||
tree val;
|
||||
|
||||
if (TREE_CODE (stmt) == MODIFY_EXPR
|
||||
&& COMPARISON_CLASS_P (TREE_OPERAND (stmt, 1)))
|
||||
pred_p = &TREE_OPERAND (stmt, 1);
|
||||
{
|
||||
modify_expr_p = true;
|
||||
pred_p = &TREE_OPERAND (stmt, 1);
|
||||
}
|
||||
else if (TREE_CODE (stmt) == COND_EXPR)
|
||||
pred_p = &COND_EXPR_COND (stmt);
|
||||
else
|
||||
|
@ -1031,6 +1035,9 @@ fold_predicate_in (tree stmt)
|
|||
val = vrp_evaluate_conditional (*pred_p, true);
|
||||
if (val)
|
||||
{
|
||||
if (modify_expr_p)
|
||||
val = fold_convert (TREE_TYPE (*pred_p), val);
|
||||
|
||||
if (dump_file)
|
||||
{
|
||||
fprintf (dump_file, "Folding predicate ");
|
||||
|
|
Loading…
Add table
Reference in a new issue