bb-reorder.c (verify_hot_cold_block_grouping): Replace internal_error with gcc_assert.
authorCaroline Tice <ctice@apple.com>
Mon, 16 May 2005 21:37:01 +0000 (21:37 +0000)
committerCaroline Tice <ctice@gcc.gnu.org>
Mon, 16 May 2005 21:37:01 +0000 (14:37 -0700)
2005-05-16  Caroline Tice  <ctice@apple.com>

        * bb-reorder.c (verify_hot_cold_block_grouping):  Replace
        internal_error with gcc_assert.
        * dwarf2out.c (dwarf2out_switch_text_section):  Likewise.
        * function.h (struct function): Remove space between "*" and
        struct field names.
        * varasm.c (initialize_cold_section_name):   Add gcc_assert;
        modify to use alloca.
        (unlikely_text_section): Add check for flag_function_sections.
        (assemble_start_function):  Move call to resolve_section, so it
        comes before first call to unlikely_text_section.
        (assemble_end_function):  Add test and call to function_section
        if appropriate.

From-SVN: r99796

gcc/ChangeLog
gcc/bb-reorder.c
gcc/dwarf2out.c
gcc/function.h
gcc/varasm.c

index 5605cc200ab59ba85e7a2f6b23dbdaa67656406b..2ac24adee94a0f7e4ac8efa62027e76f9dd5a2bf 100644 (file)
@@ -1,3 +1,18 @@
+2005-05-16  Caroline Tice  <ctice@apple.com>
+
+       * bb-reorder.c (verify_hot_cold_block_grouping):  Replace
+       internal_error with gcc_assert.
+       * dwarf2out.c (dwarf2out_switch_text_section):  Likewise.
+       * function.h (struct function): Remove space between "*" and
+       struct field names.
+       * varasm.c (initialize_cold_section_name):   Add gcc_assert;
+       modify to use alloca.
+       (unlikely_text_section): Add check for flag_function_sections.
+       (assemble_start_function):  Move call to resolve_section, so it
+       comes before first call to unlikely_text_section.
+       (assemble_end_function):  Add test and call to function_section
+       if appropriate.
+       
 2005-05-16  Roger Sayle  <roger@eyesopen.com>
 
        * c-common.c (c_common_truthvalue_conversion): Use fold_build2
index cbb49323e31d5b184f848e50e483eceb371edc16..547296714ce4b24f38d9c8609bc68c5b5cfc0696 100644 (file)
@@ -1874,8 +1874,7 @@ verify_hot_cold_block_grouping (void)
        }
     }
   
-  if (err)
-    internal_error ("verify_hot_cold_block_grouping failed");
+  gcc_assert(!err);
 }
 
 /* Reorder basic blocks.  The main entry point to this file.  FLAGS is
index aee1c2f9e71969417c1576fd8363ff4672fe237e..32711c7227cfee9e32266a743b3c0a2c68dfc9e5 100644 (file)
@@ -6814,8 +6814,7 @@ dwarf2out_switch_text_section (void)
 {
   dw_fde_ref fde;
 
-  if (!cfun)
-    internal_error ("Attempt to switch text sections without any code.");
+  gcc_assert (cfun);
 
   fde = &fde_table[fde_table_in_use - 1];
   fde->dw_fde_switched_sections = true;
index 0720c12ca5de3ad0696ce1e3804e3865a1f2ef12..f0622338209499c5febfc8cc008fd84a90babaec 100644 (file)
@@ -357,10 +357,10 @@ struct function GTY(())
      be used by debugger functions for determining the size of text
      sections.  */
 
-  const char * hot_section_label;
-  const char * cold_section_label;
-  const char * hot_section_end_label;
-  const char * cold_section_end_label;
+  const char *hot_section_label;
+  const char *cold_section_label;
+  const char *hot_section_end_label;
+  const char *cold_section_end_label;
 
   /* String to be used for name of cold text sections, via
      targetm.asm_out.named_section.  */
index bc0597efab536b6e3137fdd65d7047fa59438514..1f51e2e94782c326d58fc1ed9f7d5d5c1000e71e 100644 (file)
@@ -179,34 +179,23 @@ initialize_cold_section_name (void)
   const char *name;
   const char *stripped_name;
   char *buffer;
-  int len;
 
-  if (cfun
-      && current_function_decl)
+  gcc_assert (cfun && current_function_decl);
+  if (cfun->unlikely_text_section_name)
+    return;
+
+  if (flag_function_sections && DECL_SECTION_NAME (current_function_decl))
     {
-      if (!cfun->unlikely_text_section_name)
-       {
-         if (flag_function_sections
-             && DECL_SECTION_NAME (current_function_decl))
-           {
-             name = xstrdup (TREE_STRING_POINTER (DECL_SECTION_NAME 
-                                                  (current_function_decl)));
-             stripped_name = targetm.strip_name_encoding (name);
-             len = strlen (stripped_name);
-             buffer = (char *) xmalloc (len + 10);
-             sprintf (buffer, "%s%s", stripped_name, "_unlikely");
-             cfun->unlikely_text_section_name = ggc_strdup (buffer);
-             free (buffer);
-             free ((char *) name);
-           }
-         else
-           cfun->unlikely_text_section_name = 
-                                       UNLIKELY_EXECUTED_TEXT_SECTION_NAME;
-       }
+      name = alloca (TREE_STRING_LENGTH (DECL_SECTION_NAME
+                                        (current_function_decl)));
+      strcpy ((char *) name, TREE_STRING_POINTER (DECL_SECTION_NAME 
+                                        (current_function_decl)));
+      stripped_name = targetm.strip_name_encoding (name);
+      buffer = ACONCAT ((stripped_name, "_unlikely", NULL));
+      cfun->unlikely_text_section_name = ggc_strdup (buffer);
     }
   else
-   internal_error 
-     ("initialize_cold_section_name called without valid current_function_decl.");
+    cfun->unlikely_text_section_name =  UNLIKELY_EXECUTED_TEXT_SECTION_NAME;
 }
 
 /* Tell assembler to switch to text section.  */
@@ -232,9 +221,11 @@ unlikely_text_section (void)
       if (!cfun->unlikely_text_section_name)
        initialize_cold_section_name ();
 
-      if ((in_section != in_unlikely_executed_text)
-         &&  (in_section != in_named 
-              || strcmp (in_named_name, cfun->unlikely_text_section_name) != 0))
+      if (flag_function_sections
+         || ((in_section != in_unlikely_executed_text)
+             &&  (in_section != in_named 
+                  || (strcmp (in_named_name, cfun->unlikely_text_section_name) 
+                      != 0))))
        {
          named_section (NULL_TREE, cfun->unlikely_text_section_name, 0);
          in_section = in_unlikely_executed_text;
@@ -1267,6 +1258,8 @@ assemble_start_function (tree decl, const char *fnname)
   if (CONSTANT_POOL_BEFORE_FUNCTION)
     output_constant_pool (fnname, decl);
 
+  resolve_unique_section (decl, 0, flag_function_sections);
+
   /* Make sure the not and cold text (code) sections are properly
      aligned.  This is necessary here in the case where the function
      has both hot and cold sections, because we don't want to re-set
@@ -1320,7 +1313,6 @@ assemble_start_function (tree decl, const char *fnname)
     }
 
   last_text_section = no_section;
-  resolve_unique_section (decl, 0, flag_function_sections);
 
   /* Switch to the correct text section for the start of the function.  */
 
@@ -1406,7 +1398,10 @@ assemble_end_function (tree decl, const char *fnname)
       save_text_section = in_section;
       unlikely_text_section ();
       ASM_OUTPUT_LABEL (asm_out_file, cfun->cold_section_end_label);
-      text_section ();
+      if (first_function_block_is_cold)
+       text_section ();
+      else
+       function_section (decl);
       ASM_OUTPUT_LABEL (asm_out_file, cfun->hot_section_end_label);
       if (save_text_section == in_unlikely_executed_text)
        unlikely_text_section ();