Commit 0cde4a2c by Nathan Sidwell Committed by Nathan Sidwell

re PR tree-optimization/18307 (merge_pointed_to_info called incorrectly)

	PR tree-optimization/18307
	* tree-ssa-alias.c (merge_pointed_to_info): Protected against DEST
	and ORIG being the same node.

From-SVN: r90120
parent 6866abb8
2004-11-05 Nathan Sidwell <nathan@codesourcery.com>
PR tree-optimization/18307
* tree-ssa-alias.c (merge_pointed_to_info): Protected against DEST
and ORIG being the same node.
2004-11-04 Geoffrey Keating <geoffk@apple.com> 2004-11-04 Geoffrey Keating <geoffk@apple.com>
* Makefile.in (distclean): Don't delete nonexistent fixinc/ directory. * Makefile.in (distclean): Don't delete nonexistent fixinc/ directory.
......
...@@ -1687,14 +1687,21 @@ set_pt_malloc (tree ptr) ...@@ -1687,14 +1687,21 @@ set_pt_malloc (tree ptr)
} }
/* Given two pointers DEST and ORIG. Merge the points-to information in /* Given two different pointers DEST and ORIG. Merge the points-to
ORIG into DEST. AI is as in collect_points_to_info. */ information in ORIG into DEST. AI is as in
collect_points_to_info. */
static void static void
merge_pointed_to_info (struct alias_info *ai, tree dest, tree orig) merge_pointed_to_info (struct alias_info *ai, tree dest, tree orig)
{ {
struct ptr_info_def *dest_pi, *orig_pi; struct ptr_info_def *dest_pi, *orig_pi;
/* FIXME: It is erroneous to call this function with identical
nodes, however that currently occurs during bootstrap. This check
stops further breakage. PR 18307 documents the issue. */
if (dest == orig)
return;
/* Make sure we have points-to information for ORIG. */ /* Make sure we have points-to information for ORIG. */
collect_points_to_info_for (ai, orig); collect_points_to_info_for (ai, orig);
...@@ -1725,6 +1732,8 @@ merge_pointed_to_info (struct alias_info *ai, tree dest, tree orig) ...@@ -1725,6 +1732,8 @@ merge_pointed_to_info (struct alias_info *ai, tree dest, tree orig)
smart enough to determine that the two come from the same smart enough to determine that the two come from the same
malloc call. Copy propagation before aliasing should cure malloc call. Copy propagation before aliasing should cure
this. */ this. */
gcc_assert (orig_pi != dest_pi);
dest_pi->pt_malloc = 0; dest_pi->pt_malloc = 0;
if (orig_pi->pt_malloc || orig_pi->pt_anything) if (orig_pi->pt_malloc || orig_pi->pt_anything)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment