tree.h (enum tree_index): New member `TI_MAIN_IDENTIFIER'.
authorGreg McGary <greg@mcgary.org>
Thu, 24 Aug 2000 20:09:27 +0000 (20:09 +0000)
committerGreg McGary <gkm@gcc.gnu.org>
Thu, 24 Aug 2000 20:09:27 +0000 (20:09 +0000)
* tree.h (enum tree_index): New member `TI_MAIN_IDENTIFIER'.
(MAIN_NAME_P, main_identifier_node): New macros.
* c-common.c (c_common_nodes_and_builtins): Init main_identifier_node.
* c-decl.c (start_decl, grokdeclarator, start_function,
store_parm_decls, finish_function): Use MAIN_NAME_P.
* config/avr/avr.c (function_prologue, function_epilogue): Likewise.
* config/i386/cygwin.h (SUBTARGET_PROLOGUE): Likewise.
* config/i386/win32.h (SUBTARGET_PROLOGUE): Likewise.
* config/pdp11/pdp11.c (output_function_prologue): Likewise.

From-SVN: r35945

gcc/ChangeLog
gcc/c-common.c
gcc/c-decl.c
gcc/config/avr/avr.c
gcc/config/i386/cygwin.h
gcc/config/i386/win32.h
gcc/config/pdp11/pdp11.c
gcc/tree.h

index 2d10fb5d1ea550d67827db1c154e74114679e232..b76a4fbb86531c46a592b0e8e4e36b4a3a98a69d 100644 (file)
@@ -1,3 +1,15 @@
+2000-08-24  Greg McGary  <greg@mcgary.org>
+
+       * tree.h (enum tree_index): New member `TI_MAIN_IDENTIFIER'.
+       (MAIN_NAME_P, main_identifier_node): New macros.
+       * c-common.c (c_common_nodes_and_builtins): Init main_identifier_node.
+       * c-decl.c (start_decl, grokdeclarator, start_function,
+       store_parm_decls, finish_function): Use MAIN_NAME_P.
+       * config/avr/avr.c (function_prologue, function_epilogue): Likewise.
+       * config/i386/cygwin.h (SUBTARGET_PROLOGUE): Likewise.
+       * config/i386/win32.h (SUBTARGET_PROLOGUE): Likewise.
+       * config/pdp11/pdp11.c (output_function_prologue): Likewise.
+
 2000-08-24  Greg McGary  <greg@mcgary.org>
 
        * cppfiles.c (actual_directory): Don't write beyond `dir'
index a7eaec8a10cb0d0faec55bb4de2a52bef00503b0..9af892a1befccdbfb7a2b48215a2b1b8143eaa2c 100644 (file)
@@ -4182,6 +4182,8 @@ c_common_nodes_and_builtins (cplus_mode, no_builtins, no_nonansi_builtins)
                    BUILT_IN_NORMAL, NULL_PTR);
 #endif
 
+  main_identifier_node = get_identifier ("main");
+
   /* ??? Perhaps there's a better place to do this.  But it is related
      to __builtin_va_arg, so it isn't that off-the-wall.  */
   lang_type_promotes_to = simple_type_promotes_to;
index 17b131af1894cf18df9d9836c8fe37e964c75eff..59b238b9dd32129332ba55024a83ef65f15322b8 100644 (file)
@@ -3430,7 +3430,7 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes)
   register tree tem;
 
   if (warn_main > 0 && TREE_CODE (decl) != FUNCTION_DECL
-      && !strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)), "main"))
+      && MAIN_NAME_P (DECL_NAME (decl)))
     warning_with_decl (decl, "`%s' is usually a function");
 
   if (initialized)
@@ -4827,7 +4827,7 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
        /* Record presence of `inline', if it is reasonable.  */
        if (inlinep)
          {
-           if (! strcmp (IDENTIFIER_POINTER (declarator), "main"))
+           if (MAIN_NAME_P (declarator))
              warning ("cannot inline function `main'");
            else
              /* Assume that otherwise the function can be inlined.  */
@@ -5892,7 +5892,7 @@ start_function (declspecs, declarator, prefix_attributes, attributes)
   else if (warn_missing_prototypes
           && TREE_PUBLIC (decl1)
           && !(old_decl != 0 && TYPE_ARG_TYPES (TREE_TYPE (old_decl)) != 0)
-          && strcmp ("main", IDENTIFIER_POINTER (DECL_NAME (decl1))))
+          && ! MAIN_NAME_P (DECL_NAME (decl1)))
     warning_with_decl (decl1, "no previous prototype for `%s'");
   /* Optionally warn of any def with no previous prototype
      if the function has already been used.  */
@@ -5905,7 +5905,7 @@ start_function (declspecs, declarator, prefix_attributes, attributes)
   else if (warn_missing_declarations
           && TREE_PUBLIC (decl1)
           && old_decl == 0
-          && strcmp ("main", IDENTIFIER_POINTER (DECL_NAME (decl1))))
+          && ! MAIN_NAME_P (DECL_NAME (decl1)))
     warning_with_decl (decl1, "no previous declaration for `%s'");
   /* Optionally warn of any def with no previous declaration
      if the function has already been used.  */
@@ -5934,8 +5934,7 @@ start_function (declspecs, declarator, prefix_attributes, attributes)
     TREE_PUBLIC (decl1) = 0;
 
   /* Warn for unlikely, improbable, or stupid declarations of `main'.  */
-  if (warn_main > 0
-      && strcmp ("main", IDENTIFIER_POINTER (DECL_NAME (decl1))) == 0)
+  if (warn_main > 0 && MAIN_NAME_P (DECL_NAME (decl1)))
     {
       tree args;
       int argct = 0;
@@ -6461,7 +6460,7 @@ store_parm_decls ()
   /* If this function is `main', emit a call to `__main'
      to run global initializers, etc.  */
   if (DECL_NAME (fndecl)
-      && strcmp (IDENTIFIER_POINTER (DECL_NAME (fndecl)), "main") == 0
+      && MAIN_NAME_P (DECL_NAME (fndecl))
       && DECL_CONTEXT (fndecl) == NULL_TREE)
     expand_main_function ();
 }
@@ -6641,8 +6640,7 @@ finish_function (nested)
       setjmp_protect_args ();
     }
 
-  if (! strcmp (IDENTIFIER_POINTER (DECL_NAME (fndecl)), "main")
-      && flag_hosted)
+  if (MAIN_NAME_P (DECL_NAME (fndecl)) && flag_hosted)
     {
       if (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (fndecl)))
          != integer_type_node)
index 14ea8a9847a390d8414d376b2602bddf82a68e85..6dec0c5ee7ec425538d2ac65386b5a4f0c045340 100644 (file)
@@ -469,7 +469,7 @@ function_prologue (FILE *file, int size)
   interrupt_func_p = interrupt_function_p (current_function_decl);
   signal_func_p = signal_function_p (current_function_decl);
   leaf_func_p = leaf_function_p ();
-  main_p = ! strcmp ("main", current_function_name);
+  main_p = MAIN_NAME_P (DECL_NAME (current_function_decl));
   live_seq = sequent_regs_live ();
   minimize = (TARGET_CALL_PROLOGUES
              && !interrupt_func_p && !signal_func_p && live_seq);
@@ -604,7 +604,7 @@ function_epilogue (FILE *file, int size)
   interrupt_func_p = interrupt_function_p (current_function_decl);
   signal_func_p = signal_function_p (current_function_decl);
   leaf_func_p = leaf_function_p ();
-  main_p = ! strcmp ("main", current_function_name);
+  main_p = MAIN_NAME_P (DECL_NAME (current_function_decl));
   function_size = (INSN_ADDRESSES (INSN_UID (get_last_insn ()))
                   - INSN_ADDRESSES (INSN_UID (get_insns ())));
   live_seq = sequent_regs_live ();
@@ -3643,7 +3643,7 @@ order_regs_for_local_alloc (void)
   int *order = (TARGET_ORDER_1 ? order_1 :
                TARGET_ORDER_2 ? order_2 :
                order_0);
-  for (i=0; i < sizeof (order_0) / sizeof (order_0[0]); ++i)
+  for (i=0; i < ARRAY_SIZE (order_0); ++i)
       reg_alloc_order[i] = order[i];
 }
 
index 5839068bac85b8e11ff4b19e344efac7d09014a9..916753d6ef8be8a6a40bd60b729d56428c6afe65 100644 (file)
@@ -489,8 +489,7 @@ do {                                                                        \
 
 #define SUBTARGET_PROLOGUE                                             \
   if (profile_flag                                                     \
-      && strcmp (IDENTIFIER_POINTER (DECL_NAME (current_function_decl)),\
-                "main") == 0)                                          \
+      && MAIN_NAME_P (DECL_NAME (current_function_decl)))              \
      {                                                                 \
       emit_call_insn (gen_rtx (CALL, VOIDmode,                                 \
         gen_rtx_MEM (FUNCTION_MODE,                                    \
index 12ae5a81f16c91ced4e8ad7d9ea7e823e3b49b22..bc7619fd8fd40ea30b5978f9a3e65cc2abac57f5 100644 (file)
@@ -272,8 +272,7 @@ do {                                                                \
 
 #define SUBTARGET_PROLOGUE                                             \
   if (profile_flag                                                     \
-      && strcmp (IDENTIFIER_POINTER (DECL_NAME (current_function_decl)),\
-                "main") == 0)                                          \
+      && MAIN_NAME_P (DECL_NAME (current_function_decl))               \
      {                                                                 \
       rtx xops[1];                                                     \
       xops[0] = gen_rtx_MEM (FUNCTION_MODE,                            \
index 55839036a3e7480b39be2a9abff21d0795ada8d6..fc98a8c86f52ea7b49bcd3233aa36f6b5647a044 100644 (file)
@@ -110,8 +110,7 @@ output_function_prologue(stream, size)
 
     /* if we are outputting code for main, 
        the switch FPU to right mode if TARGET_FPU */
-    if ( (strcmp ("main", current_function_name) == 0)
-        && TARGET_FPU)
+    if (MAIN_NAME_P (DECL_NAME (current_function_decl)) && TARGET_FPU)
     {
        fprintf(stream, "\t;/* switch cpu to double float, single integer */\n");
        fprintf(stream, "\tsetd\n");
index 06688a8442492c803786892c9bdb6d4f9aea943f..0adf014970645d8224e4a0316354420bd701d031 100644 (file)
@@ -1745,6 +1745,8 @@ enum tree_index
   TI_V4HI_TYPE,
   TI_V2SI_TYPE,
 
+  TI_MAIN_IDENTIFIER,
+
   TI_MAX
 };
 
@@ -1791,6 +1793,9 @@ extern tree global_trees[TI_MAX];
 #define ptrdiff_type_node              global_trees[TI_PTRDIFF_TYPE]
 #define va_list_type_node              global_trees[TI_VA_LIST_TYPE]
 
+#define main_identifier_node           global_trees[TI_MAIN_IDENTIFIER]
+#define MAIN_NAME_P(NODE) (IDENTIFIER_NODE_CHECK (NODE) == main_identifier_node)
+
 #define V4SF_type_node                 global_trees[TI_V4SF_TYPE]
 #define V4SI_type_node                 global_trees[TI_V4SI_TYPE]
 #define V8QI_type_node                 global_trees[TI_V8QI_TYPE]