aboutsummaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
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;