re PR middle-end/33199 (tr1/2_general_utilities/shared_ptr/assign/auto_ptr.cc)

2007-08-30  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/33199
	* tree-ssa-structalias.c (handle_lhs_call): New function.
	(find_func_aliases): In non-IPA mode make sure that for
	calls that return a pointer we add a constraint for the
	result to point to anything.

From-SVN: r127927
This commit is contained in:
Richard Guenther 2007-08-30 14:52:28 +00:00 committed by Richard Biener
parent a5ea943cb8
commit af947da7a7
2 changed files with 34 additions and 1 deletions

View File

@ -1,3 +1,11 @@
2007-08-30 Richard Guenther <rguenther@suse.de>
PR tree-optimization/33199
* tree-ssa-structalias.c (handle_lhs_call): New function.
(find_func_aliases): In non-IPA mode make sure that for
calls that return a pointer we add a constraint for the
result to point to anything.
2007-08-30 Richard Guenther <rguenther@suse.de> 2007-08-30 Richard Guenther <rguenther@suse.de>
* doc/invoke.texi (-mveclibabi): Document new target option. * doc/invoke.texi (-mveclibabi): Document new target option.

View File

@ -3655,6 +3655,27 @@ handle_rhs_call (tree rhs)
} }
} }
/* For non-IPA mode, generate constraints necessary for a call
that returns a pointer and assigns it to LHS. This simply makes
the LHS point to anything. */
static void
handle_lhs_call (tree lhs)
{
VEC(ce_s, heap) *lhsc = NULL;
struct constraint_expr rhsc;
unsigned int j;
struct constraint_expr *lhsp;
rhsc.var = anything_id;
rhsc.offset = 0;
rhsc.type = ADDRESSOF;
get_constraint_for (lhs, &lhsc);
for (j = 0; VEC_iterate (ce_s, lhsc, j, lhsp); j++)
process_constraint_1 (new_constraint (*lhsp, rhsc), true);
VEC_free (ce_s, heap, lhsc);
}
/* Walk statement T setting up aliasing constraints according to the /* Walk statement T setting up aliasing constraints according to the
references found in T. This function is the main part of the references found in T. This function is the main part of the
constraint builder. AI points to auxiliary alias information used constraint builder. AI points to auxiliary alias information used
@ -3726,7 +3747,11 @@ find_func_aliases (tree origt)
if (!in_ipa_mode) if (!in_ipa_mode)
{ {
if (TREE_CODE (t) == GIMPLE_MODIFY_STMT) if (TREE_CODE (t) == GIMPLE_MODIFY_STMT)
{
handle_rhs_call (GIMPLE_STMT_OPERAND (t, 1)); handle_rhs_call (GIMPLE_STMT_OPERAND (t, 1));
if (POINTER_TYPE_P (TREE_TYPE (GIMPLE_STMT_OPERAND (t, 1))))
handle_lhs_call (GIMPLE_STMT_OPERAND (t, 0));
}
else else
handle_rhs_call (t); handle_rhs_call (t);
} }