From eb14a79f3588e22985d793cfd1eaf13eea1f955f Mon Sep 17 00:00:00 2001 From: Martin Liska Date: Tue, 18 Mar 2014 17:10:39 +0100 Subject: [PATCH] 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 --- gcc/ChangeLog | 7 +++++++ gcc/cgraph.c | 5 ++++- gcc/gimple-fold.c | 7 ++++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0289142a0bb..a6a5851ac39 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-03-18 Martin Liska + + * 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 PR sanitizer/60557 diff --git a/gcc/cgraph.c b/gcc/cgraph.c index a15b6bc7cfc..577352faa9d 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -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; } } diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c index eafdb2dd514..267c1fdad47 100644 --- a/gcc/gimple-fold.c +++ b/gcc/gimple-fold.c @@ -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); -- 2.30.2