cgraphclones.c (cgraph_create_virtual_clone): Compute the DECL_NAME of the clone...
authorEric Botcazou <ebotcazou@adacore.com>
Thu, 29 Aug 2013 19:52:33 +0000 (19:52 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Thu, 29 Aug 2013 19:52:33 +0000 (19:52 +0000)
* cgraphclones.c (cgraph_create_virtual_clone): Compute the DECL_NAME
of the clone from the DECL_NAME of the original function.

From-SVN: r202086

gcc/ChangeLog
gcc/cgraphclones.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/ipa-cp-1.c

index c5ffeadd8f83a05af6321a588b17a36e4efc8052..f254cd0324f4e53e812f84a5cb32afbce75a798e 100644 (file)
@@ -1,3 +1,8 @@
+2013-08-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * cgraphclones.c (cgraph_create_virtual_clone): Compute the DECL_NAME
+       of the clone from the DECL_NAME of the original function.
+
 2013-08-29  Oleg Endo  <olegendo@gcc.gnu.org>
 
        * passes.c (register_pass): Add overload.
index ae26a026d6453fdd4ed43dd632e4ee2d09b6a90b..54b97b91c785adb4d191bb759752018b885a39cd 100644 (file)
@@ -252,7 +252,7 @@ cgraph_clone_node (struct cgraph_node *n, tree decl, gcov_type count, int freq,
   return new_node;
 }
 
-/* Create a new name for clone of DECL, add SUFFIX.  Returns an identifier.  */
+/* Return a new assembler name for a clone of DECL with SUFFIX.  */
 
 static GTY(()) unsigned int clone_fn_id_num;
 
@@ -293,8 +293,9 @@ cgraph_create_virtual_clone (struct cgraph_node *old_node,
   tree old_decl = old_node->symbol.decl;
   struct cgraph_node *new_node = NULL;
   tree new_decl;
-  size_t i;
+  size_t len, i;
   struct ipa_replace_map *map;
+  char *name;
 
   if (!in_lto_p)
     gcc_checking_assert  (tree_versionable_function_p (old_decl));
@@ -318,8 +319,13 @@ cgraph_create_virtual_clone (struct cgraph_node *old_node,
      sometimes storing only clone decl instead of original.  */
 
   /* Generate a new name for the new version. */
-  DECL_NAME (new_decl) = clone_function_name (old_decl, suffix);
-  SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl));
+  len = IDENTIFIER_LENGTH (DECL_NAME (old_decl));
+  name = XALLOCAVEC (char, len + strlen (suffix) + 2);
+  memcpy (name, IDENTIFIER_POINTER (DECL_NAME (old_decl)), len);
+  strcpy (name + len + 1, suffix);
+  name[len] = '.';
+  DECL_NAME (new_decl) = get_identifier (name);
+  SET_DECL_ASSEMBLER_NAME (new_decl, clone_function_name (old_decl, suffix));
   SET_DECL_RTL (new_decl, NULL);
 
   new_node = cgraph_clone_node (old_node, new_decl, old_node->count,
index 1f34c2d8433c279c57f7bcd239cb0ae5f4426d21..96259ea4cd952eab82169b3e6d613ae60cfd000b 100644 (file)
@@ -1,3 +1,7 @@
+2013-08-29  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc.dg/tree-ssa/ipa-cp-1.c: Adjust regexp.
+
 2013-08-29  Richard Biener  <rguenther@suse.de>
 
        PR tree-optimization/58246
index 5d087aa45dd3204d72db359555712b4e1fb4be0b..ec628b777a98f4d01e2c3f2f905ed834feda2bc7 100644 (file)
@@ -16,5 +16,5 @@ blah ()
   very_long_function (1);
 }
 /* One appearance for dump, one self recursive call and one call from main.  */
-/* { dg-final { scan-tree-dump-times "very_long_function.constprop.0 \\(\\)" 3 "optimized"} } */
+/* { dg-final { scan-tree-dump-times "very_long_function.constprop \\(\\)" 3 "optimized"} } */
 /* { dg-final { cleanup-tree-dump "optimized" } } */