aboutsummaryrefslogtreecommitdiff
path: root/gcc/langhooks.c
diff options
context:
space:
mode:
authorNeil Booth <neil@daikokuya.demon.co.uk>2002-04-03 22:26:37 +0000
committerNeil Booth <neil@gcc.gnu.org>2002-04-03 22:26:37 +0000
commit599bba86dffe8bd03676f4bf50bca436d3112b90 (patch)
treea01f3b59f8231281416c086ab666faaa4b32176c /gcc/langhooks.c
parentcf7b8b0dc4258c4530a283000eea788c211029f9 (diff)
downloadgcc-599bba86dffe8bd03676f4bf50bca436d3112b90.zip
gcc-599bba86dffe8bd03676f4bf50bca436d3112b90.tar.gz
gcc-599bba86dffe8bd03676f4bf50bca436d3112b90.tar.bz2
langhooks-def.h (lhd_set_decl_assembler_name, [...]): New.
* langhooks-def.h (lhd_set_decl_assembler_name, LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): New. (LANG_HOOKS_INITIALIZER): Update. * langhooks.c (lhd_set_decl_assembler_name): New, from tree.c * langhooks.h (struct lang_hooks): New hook. * tree.c (set_decl_assembler_name): Move to langhooks.c. (lang_set_decl_assembler_name): Remove. (init_obstacks): Don't set hook. (decl_assembler_name): New function. * tree.h (DECL_ASSEMBLER_NAME): Turn into a function call. (decl_assembler_name): New. (lang_set_decl_assembler_name): Remove. cp: * cp-lang.c (LANG_HOOKS_SET_DECL_ASSEMBLER_NAME): Redefine. * tree.c (init_tree): Don't set hook. From-SVN: r51817
Diffstat (limited to 'gcc/langhooks.c')
-rw-r--r--gcc/langhooks.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index 9287711..4cdb8ab 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -123,6 +123,33 @@ lhd_set_yydebug (value)
fprintf (stderr, "warning: no yacc/bison-generated output to debug!\n");
}
+/* Set the DECL_ASSEMBLER_NAME for DECL. */
+void
+lhd_set_decl_assembler_name (decl)
+ tree decl;
+{
+ /* The language-independent code should never use the
+ DECL_ASSEMBLER_NAME for lots of DECLs. Only FUNCTION_DECLs and
+ VAR_DECLs for variables with static storage duration need a real
+ DECL_ASSEMBLER_NAME. */
+ if (TREE_CODE (decl) == FUNCTION_DECL
+ || (TREE_CODE (decl) == VAR_DECL
+ && (TREE_STATIC (decl)
+ || DECL_EXTERNAL (decl)
+ || TREE_PUBLIC (decl))))
+ /* By default, assume the name to use in assembly code is the
+ same as that used in the source language. (That's correct
+ for C, and GCC used to set DECL_ASSEMBLER_NAME to the same
+ value as DECL_NAME in build_decl, so this choice provides
+ backwards compatibility with existing front-ends. */
+ SET_DECL_ASSEMBLER_NAME (decl, DECL_NAME (decl));
+ else
+ /* Nobody should ever be asking for the DECL_ASSEMBLER_NAME of
+ these DECLs -- unless they're in language-dependent code, in
+ which case set_decl_assembler_name hook should handle things. */
+ abort ();
+}
+
/* Provide a default routine to clear the binding stack. This is used
by languages that don't need to do anything special. */
void