ipa-cp.c (ipcp_process_devirtualization_opportunities): Update call of gimple_get_vir...
authorJan Hubicka <jh@suse.cz>
Fri, 10 Jun 2011 13:24:30 +0000 (15:24 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 10 Jun 2011 13:24:30 +0000 (13:24 +0000)
* ipa-cp.c (ipcp_process_devirtualization_opportunities):
Update call of gimple_get_virt_method_for_binfo.
* gimple-fold.c (gimple_get_virt_method_for_binfo): Remove
refuse_thunks parameter.
(gimple_fold_call): Update.
* ipa-prop.c (try_make_edge_direct_virtual_call): Update.

From-SVN: r174905

gcc/ChangeLog
gcc/gimple-fold.c
gcc/gimple.h
gcc/ipa-cp.c
gcc/ipa-prop.c

index 14cc6d8541bfeb0f498dcc54ee441b5d87090338..09d9d1c4872c08cd74410ecb837ceecf24cd55d7 100644 (file)
@@ -1,3 +1,12 @@
+2011-06-10  Jan Hubicka  <jh@suse.cz>
+
+       * ipa-cp.c (ipcp_process_devirtualization_opportunities):
+       Update call of gimple_get_virt_method_for_binfo.
+       * gimple-fold.c (gimple_get_virt_method_for_binfo): Remove
+       refuse_thunks parameter.
+       (gimple_fold_call): Update.
+       * ipa-prop.c (try_make_edge_direct_virtual_call): Update.
+
 2011-06-10  Jan Hubicka  <jh@suse.cz>
 
        * tree-sra.c (all_callers_have_enough_arguments_p): Rename to ...
index 180a51e095a6c06de93e1e299eb4134daa20028c..6b3b275eeee652a25277a609424712f8a12f1b3f 100644 (file)
@@ -1373,11 +1373,10 @@ gimple_fold_builtin (gimple stmt)
 
 tree
 gimple_get_virt_method_for_binfo (HOST_WIDE_INT token, tree known_binfo,
-                                 tree *delta, bool refuse_thunks)
+                                 tree *delta)
 {
   HOST_WIDE_INT i;
   tree v, fndecl;
-  struct cgraph_node *node;
 
   v = BINFO_VIRTUALS (known_binfo);
   /* If there is no virtual methods leave the OBJ_TYPE_REF alone.  */
@@ -1396,18 +1395,6 @@ gimple_get_virt_method_for_binfo (HOST_WIDE_INT token, tree known_binfo,
     return NULL_TREE;
 
   fndecl = TREE_VALUE (v);
-  node = cgraph_get_node_or_alias (fndecl);
-  if (refuse_thunks
-      && (!node
-    /* Bail out if it is a thunk declaration.  Since simple this_adjusting
-       thunks are represented by a constant in TREE_PURPOSE of items in
-       BINFO_VIRTUALS, this is a more complicate type which we cannot handle as
-       yet.
-
-       FIXME: Remove the following condition once we are able to represent
-       thunk information on call graph edges.  */
-         || (node->same_body_alias && node->thunk.thunk_p)))
-    return NULL_TREE;
 
   /* When cgraph node is missing and function is not public, we cannot
      devirtualize.  This can happen in WHOPR when the actual method
@@ -1557,7 +1544,7 @@ gimple_fold_call (gimple_stmt_iterator *gsi, bool inplace)
       if (!binfo)
        return false;
       token = TREE_INT_CST_LOW (OBJ_TYPE_REF_TOKEN (callee));
-      fndecl = gimple_get_virt_method_for_binfo (token, binfo, &delta, false);
+      fndecl = gimple_get_virt_method_for_binfo (token, binfo, &delta);
       if (!fndecl)
        return false;
       gcc_assert (integer_zerop (delta));
index c39eb574c87e1ba7ee0c132789dbbe0ad5c7eaaf..7d97adbe7adfcc0e00221c6b6c994183f04acf8b 100644 (file)
@@ -904,7 +904,7 @@ unsigned get_gimple_rhs_num_ops (enum tree_code);
 gimple gimple_alloc_stat (enum gimple_code, unsigned MEM_STAT_DECL);
 const char *gimple_decl_printable_name (tree, int);
 bool gimple_fold_call (gimple_stmt_iterator *gsi, bool inplace);
-tree gimple_get_virt_method_for_binfo (HOST_WIDE_INT, tree, tree *, bool);
+tree gimple_get_virt_method_for_binfo (HOST_WIDE_INT, tree, tree *);
 void gimple_adjust_this_by_delta (gimple_stmt_iterator *, tree);
 tree gimple_extract_devirt_binfo_from_cst (tree);
 /* Returns true iff T is a valid GIMPLE statement.  */
index 18bfe90235deb59988c19d286bb1735e34363326..992f1858983850b8faf6729bd2cd9fadf11b1c14 100644 (file)
@@ -1190,8 +1190,7 @@ ipcp_process_devirtualization_opportunities (struct cgraph_node *node)
          binfo = get_binfo_at_offset (binfo, anc_offset, otr_type);
          if (!binfo)
            continue;
-         target = gimple_get_virt_method_for_binfo (token, binfo, &delta,
-                                                    false);
+         target = gimple_get_virt_method_for_binfo (token, binfo, &delta);
        }
       else
        {
@@ -1214,7 +1213,7 @@ ipcp_process_devirtualization_opportunities (struct cgraph_node *node)
                  break;
                }
 
-             t = gimple_get_virt_method_for_binfo (token, binfo, &d, true);
+             t = gimple_get_virt_method_for_binfo (token, binfo, &d);
              if (!t)
                {
                  target = NULL_TREE;
index 70622e5e4355ba1007b20947e98624d725a42159..7e74ac8b7d6251cc3eb0fea71153040e0a545b85 100644 (file)
@@ -1771,7 +1771,7 @@ try_make_edge_direct_virtual_call (struct cgraph_edge *ie,
   type = ie->indirect_info->otr_type;
   binfo = get_binfo_at_offset (binfo, ie->indirect_info->anc_offset, type);
   if (binfo)
-    target = gimple_get_virt_method_for_binfo (token, binfo, &delta, true);
+    target = gimple_get_virt_method_for_binfo (token, binfo, &delta);
   else
     return NULL;