varasm.c (default_elf_select_section_1): Only pass DECL_P decl to named_section.
authorAlan Modra <amodra@bigpond.net.au>
Mon, 29 Nov 2004 11:29:09 +0000 (11:29 +0000)
committerAlan Modra <amodra@gcc.gnu.org>
Mon, 29 Nov 2004 11:29:09 +0000 (21:59 +1030)
* varasm.c (default_elf_select_section_1): Only pass DECL_P decl
to named_section.

From-SVN: r91464

gcc/ChangeLog
gcc/varasm.c

index cd4ff92..4a65e98 100644 (file)
@@ -1,3 +1,8 @@
+2004-11-29  Alan Modra  <amodra@bigpond.net.au>
+
+       * varasm.c (default_elf_select_section_1): Only pass DECL_P decl
+       to named_section.
+
 2004-11-29  Nathan Sidwell  <nathan@codesourcery.com>
 
        * opts.c (decode_options): Do not set max-inline-insns-rtl.
index 09ce14d..e58422d 100644 (file)
@@ -4897,6 +4897,7 @@ void
 default_elf_select_section_1 (tree decl, int reloc,
                              unsigned HOST_WIDE_INT align, int shlib)
 {
+  const char *sname;
   switch (categorize_decl_for_section (decl, reloc, shlib))
     {
     case SECCAT_TEXT:
@@ -4904,56 +4905,61 @@ default_elf_select_section_1 (tree decl, int reloc,
       abort ();
     case SECCAT_RODATA:
       readonly_data_section ();
-      break;
+      return;
     case SECCAT_RODATA_MERGE_STR:
       mergeable_string_section (decl, align, 0);
-      break;
+      return;
     case SECCAT_RODATA_MERGE_STR_INIT:
       mergeable_string_section (DECL_INITIAL (decl), align, 0);
-      break;
+      return;
     case SECCAT_RODATA_MERGE_CONST:
       mergeable_constant_section (DECL_MODE (decl), align, 0);
-      break;
+      return;
     case SECCAT_SRODATA:
-      named_section (decl, ".sdata2", reloc);
+      sname = ".sdata2";
       break;
     case SECCAT_DATA:
       data_section ();
-      break;
+      return;
     case SECCAT_DATA_REL:
-      named_section (decl, ".data.rel", reloc);
+      sname = ".data.rel";
       break;
     case SECCAT_DATA_REL_LOCAL:
-      named_section (decl, ".data.rel.local", reloc);
+      sname = ".data.rel.local";
       break;
     case SECCAT_DATA_REL_RO:
-      named_section (decl, ".data.rel.ro", reloc);
+      sname = ".data.rel.ro";
       break;
     case SECCAT_DATA_REL_RO_LOCAL:
-      named_section (decl, ".data.rel.ro.local", reloc);
+      sname = ".data.rel.ro.local";
       break;
     case SECCAT_SDATA:
-      named_section (decl, ".sdata", reloc);
+      sname = ".sdata";
       break;
     case SECCAT_TDATA:
-      named_section (decl, ".tdata", reloc);
+      sname = ".tdata";
       break;
     case SECCAT_BSS:
 #ifdef BSS_SECTION_ASM_OP
       bss_section ();
+      return;
 #else
-      named_section (decl, ".bss", reloc);
-#endif
+      sname = ".bss";
       break;
+#endif
     case SECCAT_SBSS:
-      named_section (decl, ".sbss", reloc);
+      sname = ".sbss";
       break;
     case SECCAT_TBSS:
-      named_section (decl, ".tbss", reloc);
+      sname = ".tbss";
       break;
     default:
       abort ();
     }
+
+  if (!DECL_P (decl))
+    decl = NULL_TREE;
+  named_section (decl, sname, reloc);
 }
 
 /* Construct a unique section name based on the decl name and the