*** empty log message ***
authorRichard Stallman <rms@gnu.org>
Fri, 22 May 1992 19:11:09 +0000 (19:11 +0000)
committerRichard Stallman <rms@gnu.org>
Fri, 22 May 1992 19:11:09 +0000 (19:11 +0000)
From-SVN: r1050

gcc/c-decl.c

index fd0eb57d3a7c1d9087655b8c6fb469439995c234..7e502ec1057a3d0e7f475bda3f3233f16f239059 100644 (file)
@@ -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.  */