mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-20 08:10:28 +08:00
re PR tree-optimization/38445 (ICE in tree-ssa-struct-alias when compiling grub-0.97)
2008-12-09 Richard Guenther <rguenther@suse.de> PR tree-optimization/38445 * tree-ssa-structalias.c (emit_pointer_definition): Only visit names once. (emit_alias_warning): Adjust. From-SVN: r142590
This commit is contained in:
parent
30da611174
commit
b3b30b2401
@ -1,3 +1,10 @@
|
||||
2008-12-09 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/38445
|
||||
* tree-ssa-structalias.c (emit_pointer_definition): Only visit
|
||||
names once.
|
||||
(emit_alias_warning): Adjust.
|
||||
|
||||
2008-12-09 Andrew Haley <aph@redhat.com>
|
||||
|
||||
* fixed-value.c (do_fixed_add): Add comment.
|
||||
|
@ -4704,8 +4704,9 @@ static bool have_alias_info = false;
|
||||
/* Emit a note for the pointer initialization point DEF. */
|
||||
|
||||
static void
|
||||
emit_pointer_definition (gimple def)
|
||||
emit_pointer_definition (tree ptr, bitmap visited)
|
||||
{
|
||||
gimple def = SSA_NAME_DEF_STMT (ptr);
|
||||
if (gimple_code (def) == GIMPLE_PHI)
|
||||
{
|
||||
use_operand_p argp;
|
||||
@ -4715,7 +4716,10 @@ emit_pointer_definition (gimple def)
|
||||
{
|
||||
tree arg = USE_FROM_PTR (argp);
|
||||
if (TREE_CODE (arg) == SSA_NAME)
|
||||
emit_pointer_definition (SSA_NAME_DEF_STMT (arg));
|
||||
{
|
||||
if (bitmap_set_bit (visited, SSA_NAME_VERSION (arg)))
|
||||
emit_pointer_definition (arg, visited);
|
||||
}
|
||||
else
|
||||
inform (0, "initialized from %qE", arg);
|
||||
}
|
||||
@ -4729,7 +4733,6 @@ emit_pointer_definition (gimple def)
|
||||
static void
|
||||
emit_alias_warning (tree ptr)
|
||||
{
|
||||
gimple def = SSA_NAME_DEF_STMT (ptr);
|
||||
gimple use;
|
||||
imm_use_iterator ui;
|
||||
unsigned warned = 0;
|
||||
@ -4777,7 +4780,11 @@ emit_alias_warning (tree ptr)
|
||||
}
|
||||
}
|
||||
if (warned > 0)
|
||||
emit_pointer_definition (def);
|
||||
{
|
||||
bitmap visited = BITMAP_ALLOC (NULL);
|
||||
emit_pointer_definition (ptr, visited);
|
||||
BITMAP_FREE (visited);
|
||||
}
|
||||
}
|
||||
|
||||
/* Given a pointer variable P, fill in its points-to set, or return
|
||||
|
Loading…
x
Reference in New Issue
Block a user