diff mbox

Fix gimple-fold

Message ID 53285F38.7030302@suse.cz
State New
Headers show

Commit Message

Martin Liška March 18, 2014, 2:59 p.m. UTC
Patch passes bootstrap and regtest.

I fixed indentation according to discussion with Jakub.

OK for trunk?

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
>>

Comments

Richard Biener March 18, 2014, 3:01 p.m. UTC | #1
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 mbox

Patch

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);