Message ID | 53285F38.7030302@suse.cz |
---|---|
State | New |
Headers | show |
On Tue, Mar 18, 2014 at 3:59 PM, Martin Liška <mliska@suse.cz> wrote: > Patch passes bootstrap and regtest. > > I fixed indentation according to discussion with Jakub. > > OK for trunk? Ok. Thanks, Richard. > Thanks, > Martin > > > On 03/18/2014 02:55 PM, Richard Biener wrote: >> >> On Tue, Mar 18, 2014 at 2:29 PM, Martin Liška <mliska@suse.cz> wrote: >>> >>> Thank you for feedback, >> >> Ok if it passes bootstrap / regtest. >> >> Thanks, >> Richard. >> >>> new changelog: >>> >>> 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. >>> >>> OK for trunk? >>> >>> Martin >>> >>> >>> >>> On 03/18/2014 02:13 PM, Jakub Jelinek wrote: >>>> >>>> Hi! >>>> >>>>>> 2014-03-18 Martin Liska <mliska@suse.cz> >>>>>> >>>>>> * cgraph.c (cgraph_update_edges_for_call_stmt_node): added >>>>>> case >>>>>> when >>>>>> gimple call statement is updated. >>>> >>>> Capital letter after : >>>> >>>>>> * gimple-fold.c (gimple_fold_call): changed order for >>>>>> GIMPLE_ASSIGN and >>>> >>>> Likewise here. >>>> >>>> Jakub >>> >>> >
diff --git a/gcc/cgraph.c b/gcc/cgraph.c index a15b6bc..577352f 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 eafdb2d..adc9d49 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);