From 64309441e0685d95ea54f896d9eb91332afcac10 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Sun, 17 May 1992 19:29:11 +0000 Subject: [PATCH] *** empty log message *** From-SVN: r1001 --- gcc/c-decl.c | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 48e9b415466..f1bc32fef0f 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -377,6 +377,7 @@ static struct binding_level *label_level_chain; static tree grokparms (), grokdeclarator (); tree pushdecl (); tree builtin_function (); +static void declare_function_name (); static tree lookup_tag (); static tree lookup_tag_reverse (); @@ -2590,11 +2591,35 @@ init_decl_processing () builtin_function ("__builtin_getman", double_ftype_double, BUILT_IN_GETMAN, 0); #endif + /* Create the global binding of __NAME__. */ + declare_function_name ("top level"); + start_identifier_warnings (); init_format_info_table (); } +/* Make a binding for __NAME__. */ + +static void +declare_function_name (name) + char *name; +{ + tree decl, init; + + push_obstacks_nochange (); + decl = pushdecl (build_decl (VAR_DECL, + get_identifier ("__NAME__"), + char_array_type_node)); + TREE_STATIC (decl) = 1; + TREE_READONLY (decl) = 1; + DECL_IGNORED_P (decl) = 1; + init = build_string (strlen (name) + 1, name); + TREE_TYPE (init) = char_array_type_node; + DECL_INITIAL (decl) = init; + finish_decl (decl, init, NULL_TREE); +} + /* Return a definition for a builtin function named NAME and whose data type is TYPE. TYPE should be a function type with argument types. FUNCTION_CODE tells later passes how to compile calls to this function. @@ -4210,7 +4235,7 @@ get_parm_info (void_at_end) if (TREE_ASM_WRITTEN (decl)) { - error_with_decl (decl, "no real declaration for parameter `%s'"); + error_with_decl (decl, "parameter `%s' has just a forward declaration"); TREE_CHAIN (decl) = new_parms; new_parms = decl; } @@ -5057,6 +5082,9 @@ start_function (declspecs, declarator, nested) if (TREE_ADDRESSABLE (DECL_ASSEMBLER_NAME (current_function_decl))) TREE_ADDRESSABLE (current_function_decl) = 1; + /* Declare __NAME__ for this function. */ + declare_function_name (IDENTIFIER_POINTER (DECL_NAME (current_function_decl))); + return 1; } -- 2.30.2