]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
cgraph.c (cgraph_update_edges_for_call_stmt_node): Added case when gimple call statem...
authorMartin Liska <mliska@suse.cz>
Tue, 18 Mar 2014 16:10:39 +0000 (17:10 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 18 Mar 2014 16:10:39 +0000 (17:10 +0100)
* 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
gcc/cgraph.c
gcc/gimple-fold.c

index 0289142a0bbade11bdfd87770c33c5b2d1cf2205..a6a5851ac397464a6e649f9a89697cc2858f80b0 100644 (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
index a15b6bc7cfcbdfa525a3b314e51ca05ae9952321..577352faa9d934f36e3dc14aa5e87faa6e88df30 100644 (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;
                }
            }
index eafdb2dd51498acde33d0f1b0f110db8fb4e2282..267c1fdad4795a01cddffe4f7b03eebbffeef840 100644 (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);