mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-26 08:14:06 +08:00
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:
parent
b3b2cbc4fa
commit
cf282d0a4a
@ -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.
|
||||
|
@ -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
|
||||
|
23
gcc/testsuite/gcc.c-torture/compile/pr27087.c
Normal file
23
gcc/testsuite/gcc.c-torture/compile/pr27087.c
Normal 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();
|
||||
}
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user