diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-03-27 22:36:53 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-03-27 22:36:53 +0100 |
commit | 9f5e9983d94e27606d13733c2b4bcaddacde4779 (patch) | |
tree | 54f39b0da10cb19b9d49d6ea27070c46a5afa928 /gcc/tree-inline.c | |
parent | a143dc135e37cef5f228e79a4b0acadacf83e6e6 (diff) | |
download | gcc-9f5e9983d94e27606d13733c2b4bcaddacde4779.zip gcc-9f5e9983d94e27606d13733c2b4bcaddacde4779.tar.gz gcc-9f5e9983d94e27606d13733c2b4bcaddacde4779.tar.bz2 |
tree-inline.c: Include gt-tree-inline.h.
* tree-inline.c: Include gt-tree-inline.h.
(clone_fn_id_num): New variable.
(clone_function_name): New function.
(tree_function_versioning): Use it.
* Makefile.in (GTFILES): Add tree-inline.c.
* gcc.dg/ipa/ipacost-1.c: Adjust match pattern for change
in clone naming.
From-SVN: r145126
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 15419c3..e6a2fb3 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -4268,6 +4268,29 @@ tree_versionable_function_p (tree fndecl) return true; } +/* Create a new name for omp child function. Returns an identifier. */ + +static GTY(()) unsigned int clone_fn_id_num; + +static tree +clone_function_name (tree decl) +{ + tree name = DECL_ASSEMBLER_NAME (decl); + size_t len = IDENTIFIER_LENGTH (name); + char *tmp_name, *prefix; + + prefix = XALLOCAVEC (char, len + strlen ("_clone") + 1); + memcpy (prefix, IDENTIFIER_POINTER (name), len); + strcpy (prefix + len, "_clone"); +#ifndef NO_DOT_IN_LABEL + prefix[len] = '.'; +#elif !defined NO_DOLLAR_IN_LABEL + prefix[len] = '$'; +#endif + ASM_FORMAT_PRIVATE_NAME (tmp_name, prefix, clone_fn_id_num++); + return get_identifier (tmp_name); +} + /* Create a copy of a function's tree. OLD_DECL and NEW_DECL are FUNCTION_DECL tree nodes of the original function and the new copied function @@ -4315,7 +4338,7 @@ tree_function_versioning (tree old_decl, tree new_decl, varray_type tree_map, /* Generate a new name for the new version. */ if (!update_clones) { - DECL_NAME (new_decl) = create_tmp_var_name (NULL); + DECL_NAME (new_decl) = clone_function_name (old_decl); SET_DECL_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl)); SET_DECL_RTL (new_decl, NULL_RTX); id.statements_to_fold = pointer_set_create (); @@ -4520,3 +4543,5 @@ tree_can_inline_p (tree caller, tree callee) /* Allow the backend to decide if inlining is ok. */ return targetm.target_option.can_inline_p (caller, callee); } + +#include "gt-tree-inline.h" |