aboutsummaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorNeil Booth <neil@daikokuya.co.uk>2003-06-28 06:18:10 +0000
committerNeil Booth <neil@gcc.gnu.org>2003-06-28 06:18:10 +0000
commit9756310a6efc9bcf05f0d0996b2d1ee4b6777c51 (patch)
treeac5ad4358cf1509d02037b019f635c885b68d262 /gcc/toplev.c
parentf7400894d99e0482401d74affbd81ff1851423e1 (diff)
downloadgcc-9756310a6efc9bcf05f0d0996b2d1ee4b6777c51.zip
gcc-9756310a6efc9bcf05f0d0996b2d1ee4b6777c51.tar.gz
gcc-9756310a6efc9bcf05f0d0996b2d1ee4b6777c51.tar.bz2
Makefile.in: Update.
* Makefile.in: Update. * opts.c: Include tm_p.h. (handle_options): Make static. (decode_options): Copied from toplev.c. * opts.h (decode_options): New. * toplev.c (parse_options_and_default_flags): Move most to opts.c, some to... (general_init): ...here. (toplev_main): Use decode_options instead. * toplev.h (save_argc, save_argv): New. From-SVN: r68629
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c185
1 files changed, 1 insertions, 184 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 3c85676..42b8c46 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -105,7 +105,6 @@ extern tree last_assemble_variable_decl;
extern void reg_alloc (void);
static void general_init (char *);
-static void parse_options_and_default_flags (int, char **);
static void do_compile (void);
static void process_options (void);
static void backend_init (void);
@@ -4590,23 +4589,6 @@ general_init (char *argv0)
init_stringpool ();
init_ttree ();
-}
-
-/* Parse command line options and set default flag values, called
- after language-independent option-independent initialization. Do
- minimal options processing. Outputting diagnostics is OK, but GC
- and identifier hashtables etc. are not initialized yet.
-
- Return nonzero to suppress compiler back end initialization. */
-static void
-parse_options_and_default_flags (int argc, char **argv)
-{
- int i, lang_mask;
-
- /* Save in case md file wants to emit args as a comment. */
- save_argc = argc;
- save_argv = argv;
-
/* Initialize register usage now so switches may override. */
init_reg_sets ();
@@ -4615,171 +4597,6 @@ parse_options_and_default_flags (int argc, char **argv)
/* This must be done after add_params but before argument processing. */
init_ggc_heuristics();
-
- /* Perform language-specific options initialization. */
- lang_mask = (*lang_hooks.init_options) ();
-
- /* Scan to see what optimization level has been specified. That will
- determine the default value of many flags. */
- for (i = 1; i < argc; i++)
- {
- if (!strcmp (argv[i], "-O"))
- {
- optimize = 1;
- optimize_size = 0;
- }
- else if (argv[i][0] == '-' && argv[i][1] == 'O')
- {
- /* Handle -Os, -O2, -O3, -O69, ... */
- char *p = &argv[i][2];
-
- if ((p[0] == 's') && (p[1] == 0))
- {
- optimize_size = 1;
-
- /* Optimizing for size forces optimize to be 2. */
- optimize = 2;
- }
- else
- {
- const int optimize_val = read_integral_parameter (p, p - 2, -1);
- if (optimize_val != -1)
- {
- optimize = optimize_val;
- optimize_size = 0;
- }
- }
- }
- }
-
- if (!optimize)
- {
- flag_merge_constants = 0;
- }
-
- if (optimize >= 1)
- {
- flag_defer_pop = 1;
- flag_thread_jumps = 1;
-#ifdef DELAY_SLOTS
- flag_delayed_branch = 1;
-#endif
-#ifdef CAN_DEBUG_WITHOUT_FP
- flag_omit_frame_pointer = 1;
-#endif
- flag_guess_branch_prob = 1;
- flag_cprop_registers = 1;
- flag_loop_optimize = 1;
- flag_crossjumping = 1;
- flag_if_conversion = 1;
- flag_if_conversion2 = 1;
- }
-
- if (optimize >= 2)
- {
- flag_optimize_sibling_calls = 1;
- flag_cse_follow_jumps = 1;
- flag_cse_skip_blocks = 1;
- flag_gcse = 1;
- flag_expensive_optimizations = 1;
- flag_strength_reduce = 1;
- flag_rerun_cse_after_loop = 1;
- flag_rerun_loop_opt = 1;
- flag_caller_saves = 1;
- flag_force_mem = 1;
- flag_peephole2 = 1;
-#ifdef INSN_SCHEDULING
- flag_schedule_insns = 1;
- flag_schedule_insns_after_reload = 1;
-#endif
- flag_regmove = 1;
- flag_strict_aliasing = 1;
- flag_delete_null_pointer_checks = 1;
- flag_reorder_blocks = 1;
- flag_reorder_functions = 1;
- }
-
- if (optimize >= 3)
- {
- flag_inline_functions = 1;
- flag_rename_registers = 1;
- flag_unswitch_loops = 1;
- flag_unit_at_a_time = 1;
- }
-
- if (optimize < 2 || optimize_size)
- {
- align_loops = 1;
- align_jumps = 1;
- align_labels = 1;
- align_functions = 1;
-
- /* Don't reorder blocks when optimizing for size because extra
- jump insns may be created; also barrier may create extra padding.
-
- More correctly we should have a block reordering mode that tried
- to minimize the combined size of all the jumps. This would more
- or less automatically remove extra jumps, but would also try to
- use more short jumps instead of long jumps. */
- flag_reorder_blocks = 0;
- }
-
- /* Initialize whether `char' is signed. */
- flag_signed_char = DEFAULT_SIGNED_CHAR;
-#ifdef DEFAULT_SHORT_ENUMS
- /* Initialize how much space enums occupy, by default. */
- flag_short_enums = DEFAULT_SHORT_ENUMS;
-#endif
-
- /* Initialize target_flags before OPTIMIZATION_OPTIONS so the latter can
- modify it. */
- target_flags = 0;
- set_target_switch ("");
-
- /* Unwind tables are always present in an ABI-conformant IA-64
- object file, so the default should be ON. */
-#ifdef IA64_UNWIND_INFO
- flag_unwind_tables = IA64_UNWIND_INFO;
-#endif
-
-#ifdef OPTIMIZATION_OPTIONS
- /* Allow default optimizations to be specified on a per-machine basis. */
- OPTIMIZATION_OPTIONS (optimize, optimize_size);
-#endif
-
- handle_options (argc, argv, lang_mask);
-
- if (flag_pie)
- flag_pic = flag_pie;
- if (flag_pic && !flag_pie)
- flag_shlib = 1;
-
- if (flag_no_inline == 2)
- flag_no_inline = 0;
- else
- flag_really_no_inline = flag_no_inline;
-
- /* Set flag_no_inline before the post_options () hook. The C front
- ends use it to determine tree inlining defaults. FIXME: such
- code should be lang-independent when all front ends use tree
- inlining, in which case it, and this condition, should be moved
- to the top of process_options() instead. */
- if (optimize == 0)
- {
- /* Inlining does not work if not optimizing,
- so force it not to be done. */
- flag_no_inline = 1;
- warn_inline = 0;
-
- /* The c_decode_option function and decode_option hook set
- this to `2' if -Wall is used, so we can avoid giving out
- lots of errors for people who don't realize what -Wall does. */
- if (warn_uninitialized == 1)
- warning ("-Wuninitialized is not supported without -O");
- }
-
- if (flag_really_no_inline == 2)
- flag_really_no_inline = flag_no_inline;
}
/* Process the options that have been parsed. */
@@ -5169,7 +4986,7 @@ toplev_main (int argc, char **argv)
/* Parse the options and do minimal processing; basically just
enough to default flags appropriately. */
- parse_options_and_default_flags (argc, argv);
+ decode_options (argc, argv);
/* Exit early if we can (e.g. -help). */
if (!exit_after_options)