aboutsummaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2001-09-11 18:50:05 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2001-09-11 18:50:05 +0200
commit201556f0e005802b8ebb206a193a6feb55a555af (patch)
tree1e64917dd6eadf802b7c67e6f7384cc9fc03f1ae /gcc/toplev.c
parentd21b1cb8741f7dfbeab6a456d67b322312933a8c (diff)
downloadgcc-201556f0e005802b8ebb206a193a6feb55a555af.zip
gcc-201556f0e005802b8ebb206a193a6feb55a555af.tar.gz
gcc-201556f0e005802b8ebb206a193a6feb55a555af.tar.bz2
configure.in: Check whether assembler supports section merging.
* configure.in: Check whether assembler supports section merging. * config.in: Rebuilt. * configure: Rebuilt. * varasm.c (variable_section, output_constant_pool): Pass alignment to SELECT_SECTION and SELECT_RTX_SECTION. (mergeable_string_section): New. (mergeable_constant_section): New. (default_elf_asm_named_section): Output SECTION_MERGE and SECTION_STRINGS flags plus SECTION_ENTSIZE entity size. * output.h (mergeable_string_section): New. (mergeable_constant_section): New. (SECTION_MERGE, SECTION_STRINGS, SECTION_ENTSIZE): Define. * toplev.c (flag_merge_constants): New. (f_options): Add -fmerge-constants and -fmerge-all-constants options. (toplev_main): Default to -fno-merge-constants if not optimizing. * flags.h (flag_merge_constants): Add extern. * invoke.texi (-fmerge-constants, -fmerge-all-constants): Document. * tm.texi (SELECT_SECTION, SELECT_RTX_SECTION): Document added third argument. * config/elfos.h (ASM_SECTION_START_OP, ASM_OUTPUT_SECTION_START): Define if assembler has working .subsection -1 support. (SELECT_RTX_SECTION, SELECT_SECTION): Add third macro argument. Put constant into special SHF_MERGE sections if the linker should attempt to merge duplicates. * config/ia64/sysv4.h (SELECT_RTX_SECTION, SELECT_SECTION): Add third macro argument. Put constant into special SHF_MERGE sections if the linker should attempt to merge duplicates. * config/alpha/elf.h: Likewise. (ASM_SECTION_START_OP, ASM_OUTPUT_SECTION_START): Define if assembler has working .subsection -1 support. * config/nextstep.h: Add third argument to SELECT_RTX_SECTION and SELECT_SECTION. * config/svr3.h: Likewise. * config/darwin.h: Likewise. * config/arm/aof.h: Likewise. * config/arm/linux-elf.h: Likewise. * config/avr/avr.h: Likewise. * config/c4x/c4x.h: Likewise. * config/d30v/d30v.h: Likewise. * config/i386/dgux.h: Likewise. * config/i386/osfrose.h: Likewise. * config/i386/sco5.h: Likewise. * config/i386/svr3gas.h: Likewise. * config/ia64/aix.h: Likewise. * config/m32r/m32r.h: Likewise. * config/m68k/m68k.h: Likewise. * config/m88k/dgux.h: Likewise. * config/m88k/m88k.h: Likewise. * config/mcore/mcore-pe.h: Likewise. * config/mips/mips.h: Likewise. * config/pa/pa.h: Likewise. * config/pa/pa-linux.h: Likewise. * config/romp/romp.h: Likewise. * config/rs6000/sysv4.h: Likewise. * config/rs6000/xcoff.h: Likewise. * config/s390/linux.h: Likewise. * config/sparc/sparc.h: Likewise. * config/sparc/sysv4.h: Likewise. * config/stormy16/stormy16.h: Likewise. * config/v850/v850.h: Likewise. * config/vax/vms.h: Likewise. * config/arm/arm.c (arm_elf_asm_named_section): Output SECTION_MERGE and SECTION_STRINGS flags plus SECTION_ENTSIZE entity size. * config/sparc/sparc.c (sparc_elf_asm_named_section): Use default_elf_asm_named_section for SHF_MERGE sections. * com.c (ffe_init_options): Default to -fmerge-all-constants if optimizing. From-SVN: r45548
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 087a13a..925f06b 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -898,6 +898,11 @@ int flag_bounded_pointers = 0;
For CHILL: defaults to off. */
int flag_bounds_check = 0;
+/* This will attempt to merge constant section constants, if 1 only
+ string constants and constants from constant pool, if 2 also constant
+ variables. */
+int flag_merge_constants = 1;
+
/* If one, renumber instruction UIDs to reduce the number of
unused UIDs if there are a lot of instructions. If greater than
one, unconditionally renumber instruction UIDs. */
@@ -1139,6 +1144,10 @@ lang_independent_options f_options[] =
N_("Align all labels") },
{"align-functions", &align_functions, 0,
N_("Align the start of functions") },
+ {"merge-constants", &flag_merge_constants, 1,
+ N_("Attempt to merge identical constants accross compilation units") },
+ {"merge-all-constants", &flag_merge_constants, 2,
+ N_("Attempt to merge identical constants and constant variables") },
{"check-memory-usage", &flag_check_memory_usage, 1,
N_("Generate code to check every memory access") },
{"prefix-function-name", &flag_prefix_function_name, 1,
@@ -4680,6 +4689,11 @@ toplev_main (argc, argv)
}
}
+ if (!optimize)
+ {
+ flag_merge_constants = 0;
+ }
+
if (optimize >= 1)
{
flag_defer_pop = 1;