Commit 9f5e9983 by Jakub Jelinek Committed by Jakub Jelinek

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
parent a143dc13
2009-03-27 Jakub Jelinek <jakub@redhat.com>
* 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.
2009-03-27 Mark Mitchell <mark@codesourcery.com> 2009-03-27 Mark Mitchell <mark@codesourcery.com>
* BASE-VER: Change to 4.5.0. * BASE-VER: Change to 4.5.0.
......
...@@ -3308,7 +3308,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \ ...@@ -3308,7 +3308,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
$(srcdir)/tree-ssa-propagate.c \ $(srcdir)/tree-ssa-propagate.c \
$(srcdir)/tree-phinodes.c \ $(srcdir)/tree-phinodes.c \
$(srcdir)/ipa-reference.c $(srcdir)/tree-ssa-structalias.h \ $(srcdir)/ipa-reference.c $(srcdir)/tree-ssa-structalias.h \
$(srcdir)/tree-ssa-structalias.c \ $(srcdir)/tree-ssa-structalias.c $(srcdir)/tree-inline.c \
@all_gtfiles@ @all_gtfiles@
# Compute the list of GT header files from the corresponding C sources, # Compute the list of GT header files from the corresponding C sources,
......
2009-03-27 Jakub Jelinek <jakub@redhat.com>
* gcc.dg/ipa/ipacost-1.c: Adjust match pattern for change
in clone naming.
2009-03-27 Xinliang David Li <davidxl@google.com> 2009-03-27 Xinliang David Li <davidxl@google.com>
PR tree-optimization/39557 PR tree-optimization/39557
......
...@@ -53,6 +53,7 @@ main() ...@@ -53,6 +53,7 @@ main()
/* { dg-final { scan-ipa-dump-times "versioned function i_can_be_propagated_fully " 1 "cp" } } */ /* { dg-final { scan-ipa-dump-times "versioned function i_can_be_propagated_fully " 1 "cp" } } */
/* { dg-final { scan-ipa-dump-not "versioned function i_can_not_be_propagated_fully2" "cp" } } */ /* { dg-final { scan-ipa-dump-not "versioned function i_can_not_be_propagated_fully2" "cp" } } */
/* { dg-final { scan-ipa-dump-not "versioned function i_can_not_be_propagated_fully " "cp" } } */ /* { dg-final { scan-ipa-dump-not "versioned function i_can_not_be_propagated_fully " "cp" } } */
/* { dg-final { scan-tree-dump-not "i_can_be_propagated" "optimized" } } */ /* { dg-final { scan-tree-dump-not "i_can_be_propagated_fully " "optimized" } } */
/* { dg-final { scan-tree-dump-not "i_can_be_propagated_fully2 " "optimized" } } */
/* { dg-final { cleanup-ipa-dump "cp" } } */ /* { dg-final { cleanup-ipa-dump "cp" } } */
/* { dg-final { cleanup-tree-dump "optimized" } } */ /* { dg-final { cleanup-tree-dump "optimized" } } */
...@@ -4268,6 +4268,29 @@ tree_versionable_function_p (tree fndecl) ...@@ -4268,6 +4268,29 @@ tree_versionable_function_p (tree fndecl)
return true; 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. /* Create a copy of a function's tree.
OLD_DECL and NEW_DECL are FUNCTION_DECL tree nodes OLD_DECL and NEW_DECL are FUNCTION_DECL tree nodes
of the original function and the new copied function 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, ...@@ -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. */ /* Generate a new name for the new version. */
if (!update_clones) 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_ASSEMBLER_NAME (new_decl, DECL_NAME (new_decl));
SET_DECL_RTL (new_decl, NULL_RTX); SET_DECL_RTL (new_decl, NULL_RTX);
id.statements_to_fold = pointer_set_create (); id.statements_to_fold = pointer_set_create ();
...@@ -4520,3 +4543,5 @@ tree_can_inline_p (tree caller, tree callee) ...@@ -4520,3 +4543,5 @@ tree_can_inline_p (tree caller, tree callee)
/* Allow the backend to decide if inlining is ok. */ /* Allow the backend to decide if inlining is ok. */
return targetm.target_option.can_inline_p (caller, callee); return targetm.target_option.can_inline_p (caller, callee);
} }
#include "gt-tree-inline.h"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment