tree-ssa-copy.c (may_propagate_copy): Test flow sensitive alias information too.

PR/27087
        * tree-ssa-copy.c (may_propagate_copy): Test flow sensitive
        alias information too.

        * gcc.c-torture/compile/pr27087.c: New test.

From-SVN: r112849
This commit is contained in:
Jeff Law 2006-04-10 23:52:45 -06:00 committed by Jeff Law
parent b3b2cbc4fa
commit cf282d0a4a
4 changed files with 49 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2006-04-03 Jeff Law <law@redhat.com>
PR/27087
* tree-ssa-copy.c (may_propagate_copy): Test flow sensitive
alias information too.
2006-04-10 Mike Frysinger <vapier@gentoo.org>
* gcc/Makefile.in (gcc-cross): Add $(exeext) to target name.

View File

@ -1,3 +1,8 @@
2006-04-10 Jeff Law <law@redhat.com>
PR/27087
* gcc.c-torture/compile/pr27087.c: New test.
2006-04-10 Aldy Hernandez <aldyh@redhat.com>
PR/21391

View File

@ -0,0 +1,23 @@
extern int ptbl[4];
extern int ctbl[4];
void doViews(void) {
int *c = ctbl, *p = ptbl;
while (1)
{
p++;
c++;
if (*p)
{
if (c == p)
{
if (*c)
return;
}
else
return;
}
}
g();
}

View File

@ -117,6 +117,21 @@ may_propagate_copy (tree dest, tree orig)
else if (get_alias_set (TREE_TYPE (type_d)) !=
get_alias_set (TREE_TYPE (type_o)))
return false;
/* Also verify flow-sensitive information is compatible. */
if (SSA_NAME_PTR_INFO (orig) && SSA_NAME_PTR_INFO (dest))
{
struct ptr_info_def *orig_ptr_info = SSA_NAME_PTR_INFO (orig);
struct ptr_info_def *dest_ptr_info = SSA_NAME_PTR_INFO (dest);
if (orig_ptr_info->name_mem_tag
&& dest_ptr_info->name_mem_tag
&& orig_ptr_info->pt_vars
&& dest_ptr_info->pt_vars
&& !bitmap_intersect_p (dest_ptr_info->pt_vars,
orig_ptr_info->pt_vars))
return false;
}
}
/* If the destination is a SSA_NAME for a virtual operand, then we have