cgraph.c (cgraph_update_edges_for_call_stmt_node): Added case when gimple call statement is update.

* cgraph.c (cgraph_update_edges_for_call_stmt_node): Added case when
	gimple call statement is update.
	* gimple-fold.c (gimple_fold_call): Changed order for GIMPLE_ASSIGN and
	GIMPLE_CALL, where gsi iterator still points to GIMPLE CALL.

From-SVN: r208654
This commit is contained in:
Martin Liska 2014-03-18 17:10:39 +01:00 committed by Jakub Jelinek
parent bd10e887a5
commit eb14a79f35
3 changed files with 17 additions and 2 deletions

View File

@ -1,3 +1,10 @@
2014-03-18 Martin Liska <mliska@suse.cz>
* cgraph.c (cgraph_update_edges_for_call_stmt_node): Added case when
gimple call statement is update.
* gimple-fold.c (gimple_fold_call): Changed order for GIMPLE_ASSIGN and
GIMPLE_CALL, where gsi iterator still points to GIMPLE CALL.
2014-03-18 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/60557

View File

@ -1519,7 +1519,10 @@ cgraph_update_edges_for_call_stmt_node (struct cgraph_node *node,
{
if (callee->decl == new_call
|| callee->former_clone_of == new_call)
return;
{
cgraph_set_call_stmt (e, new_stmt);
return;
}
callee = callee->clone_of;
}
}

View File

@ -1153,8 +1153,13 @@ gimple_fold_call (gimple_stmt_iterator *gsi, bool inplace)
{
tree var = create_tmp_var (TREE_TYPE (lhs), NULL);
tree def = get_or_create_ssa_default_def (cfun, var);
gsi_insert_before (gsi, new_stmt, GSI_SAME_STMT);
/* To satisfy condition for
cgraph_update_edges_for_call_stmt_node,
we need to preserve GIMPLE_CALL statement
at position of GSI iterator. */
update_call_from_tree (gsi, def);
gsi_insert_before (gsi, new_stmt, GSI_NEW_STMT);
}
else
gsi_replace (gsi, new_stmt, true);