re PR tree-optimization/31254 (verify_ssa failed: type mismatch between an SSA_NAME and its symbol)
2007-03-19 Andrew Pinski <andrew_pinski@playstation.sony.com> Richard Guenther <rguenther@suse.de> PR tree-optimization/31254 * tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Use handled_component_p () where appropriate. Continue propagating into the rhs if we propagated into an INDIRECT_REF on the lhs. * gcc.dg/torture/pr31254.c: New testcase. Co-Authored-By: Richard Guenther <rguenther@suse.de> From-SVN: r123060
This commit is contained in:
parent
3d16fe64c5
commit
60e0af9418
|
@ -1,3 +1,12 @@
|
|||
2007-03-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
|
||||
Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/31254
|
||||
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1):
|
||||
Use handled_component_p () where appropriate. Continue
|
||||
propagating into the rhs if we propagated into an INDIRECT_REF
|
||||
on the lhs.
|
||||
|
||||
2007-03-19 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
* config/s390/s390.md (op_type attribute): RRR instruction type added.
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2007-03-19 Andrew Pinski <andrew_pinski@playstation.sony.com>
|
||||
Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/31254
|
||||
* gcc.dg/torture/pr31254.c: New testcase.
|
||||
|
||||
2007-03-19 Hans-Peter Nilsson <hp@axis.com>
|
||||
|
||||
* gcc.dg/torture/pr26565.c: Expect warning on packed field for
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
/* { dg-do compile } */
|
||||
|
||||
struct timespec
|
||||
{
|
||||
long tv_sec;
|
||||
long tv_nsec;
|
||||
};
|
||||
struct inode
|
||||
{
|
||||
struct timespec i_atime;
|
||||
struct timespec i_mtime;
|
||||
};
|
||||
struct afs_vnode
|
||||
{
|
||||
struct inode vfs_inode;
|
||||
};
|
||||
static inline
|
||||
struct inode *AFS_VNODE_TO_I (struct afs_vnode *vnode)
|
||||
{
|
||||
return &vnode->vfs_inode;
|
||||
};
|
||||
afs_inode_map_status (struct afs_vnode *vnode)
|
||||
{
|
||||
struct inode *inode = AFS_VNODE_TO_I (vnode);
|
||||
inode->i_atime = inode->i_mtime;
|
||||
}
|
|
@ -680,7 +680,7 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs, tree use_stmt)
|
|||
/* Strip away any outer COMPONENT_REF/ARRAY_REF nodes from the LHS.
|
||||
ADDR_EXPR will not appear on the LHS. */
|
||||
lhs = GIMPLE_STMT_OPERAND (use_stmt, 0);
|
||||
while (TREE_CODE (lhs) == COMPONENT_REF || TREE_CODE (lhs) == ARRAY_REF)
|
||||
while (handled_component_p (lhs))
|
||||
lhs = TREE_OPERAND (lhs, 0);
|
||||
|
||||
rhs = GIMPLE_STMT_OPERAND (use_stmt, 1);
|
||||
|
@ -695,9 +695,7 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs, tree use_stmt)
|
|||
fold_stmt_inplace (use_stmt);
|
||||
tidy_after_forward_propagate_addr (use_stmt);
|
||||
|
||||
/* The only case we did not replace all uses this way is if the
|
||||
use statement is of the form *name = name. */
|
||||
return rhs != name;
|
||||
/* Continue propagating into the RHS. */
|
||||
}
|
||||
|
||||
/* Trivial case. The use statement could be a trivial copy or a
|
||||
|
@ -714,8 +712,7 @@ forward_propagate_addr_expr_1 (tree name, tree def_rhs, tree use_stmt)
|
|||
|
||||
/* Strip away any outer COMPONENT_REF, ARRAY_REF or ADDR_EXPR
|
||||
nodes from the RHS. */
|
||||
while (TREE_CODE (rhs) == COMPONENT_REF
|
||||
|| TREE_CODE (rhs) == ARRAY_REF
|
||||
while (handled_component_p (rhs)
|
||||
|| TREE_CODE (rhs) == ADDR_EXPR)
|
||||
rhs = TREE_OPERAND (rhs, 0);
|
||||
|
||||
|
|
Loading…
Reference in New Issue