[patch] for PR23509
Zdenek Dvorak
rakdver@atrey.karlin.mff.cuni.cz
Sat Aug 27 22:07:00 GMT 2005
Hello,
here is a new version of the patch, which makes replace_uses_by
to merge the alias info when pointers are propagated.
Bootstrapped & regtested on i686.
Zdenek
PR tree-optimization/23509
* tree-cfg.c (replace_uses_by): Use replace_exp.
* tree-ssa-loop-ivopts.c (get_ref_tag): Assert that dereferenced
pointers have name_mem_tag or type_mem_tag set.
Index: tree-cfg.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-cfg.c,v
retrieving revision 2.217
diff -c -3 -p -r2.217 tree-cfg.c
*** tree-cfg.c 24 Aug 2005 07:56:54 -0000 2.217
--- tree-cfg.c 27 Aug 2005 18:18:40 -0000
*************** replace_uses_by (tree name, tree val)
*** 1237,1244 ****
FOR_EACH_IMM_USE_SAFE (use, imm_iter, name)
{
stmt = USE_STMT (use);
!
! SET_USE (use, val);
if (TREE_CODE (stmt) == PHI_NODE)
{
--- 1237,1243 ----
FOR_EACH_IMM_USE_SAFE (use, imm_iter, name)
{
stmt = USE_STMT (use);
! replace_exp (use, val);
if (TREE_CODE (stmt) == PHI_NODE)
{
Index: tree-ssa-loop-ivopts.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/tree-ssa-loop-ivopts.c,v
retrieving revision 2.87
diff -c -3 -p -r2.87 tree-ssa-loop-ivopts.c
*** tree-ssa-loop-ivopts.c 13 Aug 2005 17:28:40 -0000 2.87
--- tree-ssa-loop-ivopts.c 27 Aug 2005 18:18:44 -0000
*************** get_ref_tag (tree ref)
*** 5448,5456 ****
return NULL_TREE;
if (TREE_CODE (var) == INDIRECT_REF)
- var = TREE_OPERAND (var, 0);
- if (TREE_CODE (var) == SSA_NAME)
{
if (SSA_NAME_PTR_INFO (var))
{
tag = SSA_NAME_PTR_INFO (var)->name_mem_tag;
--- 5448,5460 ----
return NULL_TREE;
if (TREE_CODE (var) == INDIRECT_REF)
{
+ /* In case the base is a dereference of a pointer, first check its name
+ mem tag, and if it does not have one, use type mem tag. */
+ var = TREE_OPERAND (var, 0);
+ if (TREE_CODE (var) != SSA_NAME)
+ return NULL_TREE;
+
if (SSA_NAME_PTR_INFO (var))
{
tag = SSA_NAME_PTR_INFO (var)->name_mem_tag;
*************** get_ref_tag (tree ref)
*** 5459,5476 ****
}
var = SSA_NAME_VAR (var);
}
!
! if (DECL_P (var))
! {
tag = var_ann (var)->type_mem_tag;
if (tag)
return tag;
return var;
}
-
- return NULL_TREE;
}
/* Copies the reference information from OLD_REF to NEW_REF. */
--- 5463,5483 ----
}
var = SSA_NAME_VAR (var);
+ tag = var_ann (var)->type_mem_tag;
+ gcc_assert (tag != NULL_TREE);
+ return tag;
}
! else
! {
! if (!DECL_P (var))
! return NULL_TREE;
!
tag = var_ann (var)->type_mem_tag;
if (tag)
return tag;
return var;
}
}
/* Copies the reference information from OLD_REF to NEW_REF. */
More information about the Gcc-patches
mailing list