aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-05-22 19:11:09 +0000
committerRichard Stallman <rms@gnu.org>1992-05-22 19:11:09 +0000
commit2bae939e78cf37926f577cebb49812a42da1f637 (patch)
tree55c256cdd4d126904d9c9000f73ea12a75561bf2 /gcc
parent3251bd405042a6d97069b1b87fc8985efa82ac08 (diff)
downloadgcc-2bae939e78cf37926f577cebb49812a42da1f637.zip
gcc-2bae939e78cf37926f577cebb49812a42da1f637.tar.gz
gcc-2bae939e78cf37926f577cebb49812a42da1f637.tar.bz2
*** empty log message ***
From-SVN: r1050
Diffstat (limited to 'gcc')
-rw-r--r--gcc/c-decl.c37
1 files changed, 30 insertions, 7 deletions
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index fd0eb57..7e502ec 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -1787,6 +1787,8 @@ pushdecl (x)
/* Maybe warn if shadowing something else. */
else if (warn_shadow && !TREE_EXTERNAL (x)
+ /* No shadow warnings for internally generated vars. */
+ && !DECL_IGNORED_P (x)
/* No shadow warnings for vars made for inlining. */
&& ! DECL_FROM_INLINE (x))
{
@@ -2595,19 +2597,19 @@ 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");
+ /* Create the global bindings of __NAME__ and __PRINTABLE_NAME__. */
+ declare_function_name ("", "top level");
start_identifier_warnings ();
init_format_info_table ();
}
-/* Make a binding for __NAME__. */
+/* Make bindings for __NAME__ and __PRINTABLE_NAME__. */
static void
-declare_function_name (name)
- char *name;
+declare_function_name (name, printable_name)
+ char *name, *printable_name;
{
tree decl, init;
@@ -2622,6 +2624,18 @@ declare_function_name (name)
TREE_TYPE (init) = char_array_type_node;
DECL_INITIAL (decl) = init;
finish_decl (decl, init, NULL_TREE);
+
+ push_obstacks_nochange ();
+ decl = pushdecl (build_decl (VAR_DECL,
+ get_identifier ("__PRINTABLE_NAME__"),
+ char_array_type_node));
+ TREE_STATIC (decl) = 1;
+ TREE_READONLY (decl) = 1;
+ DECL_IGNORED_P (decl) = 1;
+ init = build_string (strlen (printable_name) + 1, printable_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
@@ -5473,8 +5487,17 @@ store_parm_decls ()
if (c_function_varargs)
mark_varargs ();
- /* Declare __NAME__ for this function. */
- declare_function_name (IDENTIFIER_POINTER (DECL_NAME (current_function_decl)));
+ /* Declare __NAME__ and __PRINTABLE_NAME__ for this function. */
+ {
+ char *kind = "function";
+ char *name;
+ if (current_function_decl != 0
+ && TREE_CODE (TREE_TYPE (current_function_decl)) == METHOD_TYPE)
+ kind = "method";
+ name = (*decl_printable_name) (current_function_decl, &kind);
+ declare_function_name (name,
+ IDENTIFIER_POINTER (DECL_NAME (current_function_decl)));
+ }
/* Set up parameters and prepare for return, for the function. */