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:
parent
a5ea943cb8
commit
af947da7a7
|
@ -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.
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue