Hi,
this patch kills lto's code to rebuilt DECL_FUNCTION_SPECIFIC_TARGET from target
attributes. This code was never complete and it should be no-op now when we
save
tehe target nodes.
It also makes free_land_data_in_decl to actually anotate all function bodies
with
a default option node. The reason is that when LTOint units, one compiled with
default settings and one, say with -msse3, we want ot keep these functions
preserved.
Incrementally i will proceed with similar changes for optimization nodes.
Bootstrapped/regtested ppc64-linux, earlier version tested at x86_64-linux and
firefox LTO, OK?
Honza
* lto.c (lto_read_decls): Do not rebuild DECL_FUNCTION_SPECIFIC_TARGET.
* tree.c (free_lang_data_in_decl): Annotate all functio nbodies with
DECL_FUNCTION_SPECIFIC_TARGET.
Index: lto/lto.c
===================================================================
--- lto/lto.c (revision 217571)
+++ lto/lto.c (working copy)
@@ -1935,15 +1935,6 @@
if (TREE_CODE (t) == INTEGER_CST
&& !TREE_OVERFLOW (t))
cache_integer_cst (t);
- /* Re-build DECL_FUNCTION_SPECIFIC_TARGET, we need that
- for both WPA and LTRANS stage. */
- if (TREE_CODE (t) == FUNCTION_DECL)
- {
- tree attr = lookup_attribute ("target", DECL_ATTRIBUTES (t));
- if (attr)
- targetm.target_option.valid_attribute_p
- (t, NULL_TREE, TREE_VALUE (attr), 0);
- }
/* Register TYPE_DECLs with the debuginfo machinery. */
if (!flag_wpa
&& TREE_CODE (t) == TYPE_DECL)
Index: tree.c
===================================================================
--- tree.c (revision 217571)
+++ tree.c (working copy)
@@ -5115,6 +5115,9 @@
the PARM_DECL will be used in the function's body). */
for (t = DECL_ARGUMENTS (decl); t; t = TREE_CHAIN (t))
DECL_CONTEXT (t) = decl;
+ if (!DECL_FUNCTION_SPECIFIC_TARGET (decl))
+ DECL_FUNCTION_SPECIFIC_TARGET (decl)
+ = target_option_default_node;
}
/* DECL_SAVED_TREE holds the GENERIC representation for DECL.