OSDN Git Service

* output.h (DECL_READONLY_SECTION): Remove.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 1 Aug 2002 23:29:55 +0000 (23:29 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 1 Aug 2002 23:29:55 +0000 (23:29 +0000)
        (decl_readonly_section): Declare.
        * varasm.c (decl_readonly_section): New.
        (default_section_type_flags, default_select_section): Use it.
        * config/arm/pe.c (arm_pe_unique_section): Likewise.
        * config/i386/interix.c (i386_pe_unique_section): Likewise.
        * config/i386/winnt.c (i386_pe_unique_section): Likewise.
        * config/mcore/mcore.c (mcore_unique_section): Likewise.
        * config/mips/mips.c (mips_unique_section): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@55957 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/arm/pe.c
gcc/config/i386/interix.c
gcc/config/i386/winnt.c
gcc/config/mcore/mcore.c
gcc/config/mips/mips.c
gcc/output.h
gcc/varasm.c

index c65c89e..22f4ba1 100644 (file)
@@ -1,3 +1,16 @@
+2002-08-01  H.J. Lu <hjl@gnu.org>
+           Richard Henderson  <rth@redhat.com>
+
+       * output.h (DECL_READONLY_SECTION): Remove.
+       (decl_readonly_section): Declare.
+       * varasm.c (decl_readonly_section): New.
+       (default_section_type_flags, default_select_section): Use it.
+       * config/arm/pe.c (arm_pe_unique_section): Likewise.
+       * config/i386/interix.c (i386_pe_unique_section): Likewise.
+       * config/i386/winnt.c (i386_pe_unique_section): Likewise.
+       * config/mcore/mcore.c (mcore_unique_section): Likewise.
+       * config/mips/mips.c (mips_unique_section): Likewise.
+
 2002-08-01  Richard Henderson  <rth@redhat.com>
 
        * integrate.c (copy_rtx_and_substitute): Squash MEM_EXPR when it
index c86e231..848d198 100644 (file)
@@ -264,7 +264,7 @@ arm_pe_unique_section (decl, reloc)
      (everything from the $ on is stripped).  */
   if (TREE_CODE (decl) == FUNCTION_DECL)
     prefix = ".text$";
-  else if (DECL_READONLY_SECTION (decl, reloc))
+  else if (decl_readonly_section (decl, reloc))
     prefix = ".rdata$";
   else
     prefix = ".data$";
index 58a19ab..e2222ca 100644 (file)
@@ -112,7 +112,7 @@ i386_pe_unique_section (decl, reloc)
      without a .rdata section.  */
   if (TREE_CODE (decl) == FUNCTION_DECL)
     prefix = ".text$";
-  else if (DECL_READONLY_SECTION (decl, reloc))
+  else if (decl_readonly_section (decl, reloc))
     prefix = ".rdata$";
   else
     prefix = ".data$";
index d6f0a7a..066b4d2 100644 (file)
@@ -472,7 +472,7 @@ i386_pe_unique_section (decl, reloc)
      without a .rdata section.  */
   if (TREE_CODE (decl) == FUNCTION_DECL)
     prefix = ".text$";
-  else if (DECL_READONLY_SECTION (decl, reloc))
+  else if (decl_readonly_section (decl, reloc))
     prefix = ".rdata$";
   else
     prefix = ".data$";
@@ -518,7 +518,7 @@ i386_pe_section_type_flags (decl, name, reloc)
 
   if (decl && TREE_CODE (decl) == FUNCTION_DECL)
     flags = SECTION_CODE;
-  else if (decl && DECL_READONLY_SECTION (decl, reloc))
+  else if (decl && decl_readonly_section (decl, reloc))
     flags = 0;
   else
     {
index 2b7747e..650d0dd 100644 (file)
@@ -3540,7 +3540,7 @@ mcore_unique_section (decl, reloc)
     prefix = ".text$";
   /* For compatibility with EPOC, we ignore the fact that the
      section might have relocs against it.  */
-  else if (DECL_READONLY_SECTION (decl, 0))
+  else if (decl_readonly_section (decl, 0))
     prefix = ".rdata$";
   else
     prefix = ".data$";
index 532e559..d04f4ce 100644 (file)
@@ -10310,7 +10310,7 @@ mips_unique_section (decl, reloc)
         read-only data if possible, in order to reduce RAM
         usage.  */
 
-      if (DECL_READONLY_SECTION (decl, reloc))
+      if (decl_readonly_section (decl, reloc))
        sec = 1;
       else if (size > 0 && size <= mips_section_threshold)
        sec = 3;
@@ -10325,7 +10325,7 @@ mips_unique_section (decl, reloc)
 
       if (size > 0 && size <= mips_section_threshold)
        sec = 3;
-      else if (DECL_READONLY_SECTION (decl, reloc))
+      else if (decl_readonly_section (decl, reloc))
        sec = 1;
       else
        sec = 2;
index 53ed810..533af93 100644 (file)
@@ -468,16 +468,9 @@ extern struct rtx_def *current_output_insn;
    The precise value is the insn being output, to pass to error_for_asm.  */
 extern rtx this_is_asm_operands;
 
-/* Decide whether DECL needs to be in a writable section.  RELOC is the same
-   as for SELECT_SECTION.  */
-
-#define DECL_READONLY_SECTION(DECL,RELOC)              \
-  (TREE_READONLY (DECL)                                        \
-   && ! TREE_THIS_VOLATILE (DECL)                      \
-   && DECL_INITIAL (DECL)                              \
-   && (DECL_INITIAL (DECL) == error_mark_node          \
-       || TREE_CONSTANT (DECL_INITIAL (DECL)))         \
-   && ! (RELOC && (flag_pic || DECL_ONE_ONLY (DECL))))
+/* Decide whether DECL needs to be in a writable section.
+   RELOC is the same as for SELECT_SECTION.  */
+extern bool decl_readonly_section PARAMS ((tree, int));
 
 /* User label prefix in effect for this compilation.  */
 extern const char *user_label_prefix;
index d22cb11..e35d8a2 100644 (file)
@@ -4712,7 +4712,7 @@ default_section_type_flags (decl, name, reloc)
 
   if (decl && TREE_CODE (decl) == FUNCTION_DECL)
     flags = SECTION_CODE;
-  else if (decl && DECL_READONLY_SECTION (decl, reloc))
+  else if (decl && decl_readonly_section (decl, reloc))
     flags = 0;
   else
     flags = SECTION_WRITE;
@@ -4872,7 +4872,7 @@ default_select_section (decl, reloc, align)
 
   if (DECL_P (decl))
     {
-      if (DECL_READONLY_SECTION (decl, reloc))
+      if (decl_readonly_section (decl, reloc))
        readonly = true;
     }
   else if (TREE_CODE (decl) == CONSTRUCTOR)
@@ -5011,6 +5011,25 @@ categorize_decl_for_section (decl, reloc)
   return ret;
 }
 
+bool
+decl_readonly_section (decl, reloc)
+     tree decl;
+     int reloc;
+{
+  switch (categorize_decl_for_section (decl, reloc))
+    {
+    case SECCAT_RODATA:
+    case SECCAT_RODATA_MERGE_STR:
+    case SECCAT_RODATA_MERGE_STR_INIT:
+    case SECCAT_RODATA_MERGE_CONST:
+      return true;
+      break;
+    default:
+      return false;
+      break;
+    }
+}
+
 /* Select a section based on the above categorization.  */
 
 void