+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.
/* 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;
{
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);
}
static void
emit_alias_warning (tree ptr)
{
- gimple def = SSA_NAME_DEF_STMT (ptr);
gimple use;
imm_use_iterator ui;
unsigned warned = 0;
}
}
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