output.h (DECL_READONLY_SECTION): Remove.

* 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.

Co-Authored-By: Richard Henderson <rth@redhat.com>

From-SVN: r55957
This commit is contained in:
H.J. Lu 2002-08-01 23:29:55 +00:00 committed by Richard Henderson
parent 32e9b9606f
commit 4e4d733e19
8 changed files with 44 additions and 19 deletions

View 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

View 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$";

View 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$";

View 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
{

View 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$";

View 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;

View 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;

View 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