Commit d0502276 by Jan Hubicka Committed by Jan Hubicka

re PR ipa/65028 (450.soplex in SPEC CPU 2006 is miscompiled)

	PR ipa/65028
	* ipa-prop.c (update_indirect_edges_after_inlining): Do not drop
	polymorphic call info when type is not known to be preserved.

From-SVN: r220694
parent 4fd94d1e
2015-02-13 Jan Hubicka <hubicka@ucw.cz>
PR ipa/65028
* ipa-prop.c (update_indirect_edges_after_inlining): Do not drop
polymorphic call info when type is not known to be preserved.
2015-02-13 Maritn Jambor <mjambor@suse.cz>
PR ipa/65028
......
......@@ -3143,25 +3143,31 @@ update_indirect_edges_after_inlining (struct cgraph_edge *cs,
if (jfunc->type == IPA_JF_PASS_THROUGH
&& ipa_get_jf_pass_through_operation (jfunc) == NOP_EXPR)
{
if ((ici->agg_contents
&& !ipa_get_jf_pass_through_agg_preserved (jfunc))
|| (ici->polymorphic
&& !ipa_get_jf_pass_through_type_preserved (jfunc)))
if (ici->agg_contents
&& !ipa_get_jf_pass_through_agg_preserved (jfunc)
&& !ici->polymorphic)
ici->param_index = -1;
else
{
ici->param_index = ipa_get_jf_pass_through_formal_id (jfunc);
if (ici->polymorphic
&& !ipa_get_jf_pass_through_type_preserved (jfunc))
ici->vptr_changed = true;
}
}
else if (jfunc->type == IPA_JF_ANCESTOR)
{
if ((ici->agg_contents
&& !ipa_get_jf_ancestor_agg_preserved (jfunc))
|| (ici->polymorphic
&& !ipa_get_jf_ancestor_type_preserved (jfunc)))
if (ici->agg_contents
&& !ipa_get_jf_ancestor_agg_preserved (jfunc)
&& !ici->polymorphic)
ici->param_index = -1;
else
{
ici->param_index = ipa_get_jf_ancestor_formal_id (jfunc);
ici->offset += ipa_get_jf_ancestor_offset (jfunc);
if (ici->polymorphic
&& !ipa_get_jf_ancestor_type_preserved (jfunc))
ici->vptr_changed = true;
}
}
else
......
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