diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1643e386f7a..d44f6ec2960 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2003-06-22 Neil Booth + + * common.opt: Add -finline-limit. + * opts.c (common_handle_options): Handle it. + * opts.sh: Temporary kludge for -finline-limit. + * toplev.c (decode_f_option, independent_decode_option): Die. + (parse_options_and_default_flags): No independent_decode_option. + 2003-06-22 Andreas Jaeger * calls.c (emit_call_1): Readd lost ATTRIBUTE_UNUSED. diff --git a/gcc/common.opt b/gcc/common.opt index 331199ff7ed..cca70d65a0e 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -307,6 +307,12 @@ Common finline-functions Common +finline-limit- +Common RejectNegative Joined UInteger + +finline-limit= +Common RejectNegative Joined UInteger + finstrument-functions Common diff --git a/gcc/opts.c b/gcc/opts.c index 2ec9de5b6aa..2712346149f 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -734,6 +734,21 @@ common_handle_option (size_t scode, const char *arg, flag_inline_functions = value; break; + case OPT_finline_limit_: + case OPT_finline_limit_eq: + set_param_value ("max-inline-insns", value); + set_param_value ("max-inline-insns-single", value / 2); + set_param_value ("max-inline-insns-auto", value / 2); + set_param_value ("max-inline-insns-rtl", value); + if (value / 4 < MIN_INLINE_INSNS) + { + if (value / 4 > 10) + set_param_value ("min-inline-insns", value / 4); + else + set_param_value ("min-inline-insns", 10); + } + break; + case OPT_finstrument_functions: flag_instrument_function_entry_exit = value; break; diff --git a/gcc/opts.sh b/gcc/opts.sh index 07eb1fe1db6..2bedcfc9e00 100644 --- a/gcc/opts.sh +++ b/gcc/opts.sh @@ -114,6 +114,8 @@ ${AWK} ' len = length (opts[i]); enum = "OPT_" opts[i] + if (opts[i] == "finline-limit=") + enum = enum "eq" gsub ("[^A-Za-z0-9]", "_", enum) # If this switch takes joined arguments, back-chain all diff --git a/gcc/toplev.c b/gcc/toplev.c index d66ec1a31d1..33c027417ca 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -117,9 +117,6 @@ static void crash_signal (int) ATTRIBUTE_NORETURN; static void setup_core_dumping (void); static void compile_file (void); -static int decode_f_option (const char *); -static unsigned int independent_decode_option (char **); - static int print_single_switch (FILE *, int, int, const char *, const char *, const char *, const char *, const char *); @@ -4149,39 +4146,6 @@ decode_d_option (const char *arg) } } -/* Parse a -f... command line switch. ARG is the value after the -f. - It is safe to access 'ARG - 2' to generate the full switch name. - Return the number of strings consumed. */ - -static int -decode_f_option (const char *arg) -{ - const char *option_value; - - if ((option_value = skip_leading_substring (arg, "inline-limit-")) - || (option_value = skip_leading_substring (arg, "inline-limit="))) - { - int val = - read_integral_parameter (option_value, arg - 2, - MAX_INLINE_INSNS); - set_param_value ("max-inline-insns", val); - set_param_value ("max-inline-insns-single", val/2); - set_param_value ("max-inline-insns-auto", val/2); - set_param_value ("max-inline-insns-rtl", val); - if (val/4 < MIN_INLINE_INSNS) - { - if (val/4 > 10) - set_param_value ("min-inline-insns", val/4); - else - set_param_value ("min-inline-insns", 10); - } - } - else - return 0; - - return 1; -} - /* Indexed by enum debug_info_type. */ const char *const debug_type_names[] = { @@ -4306,25 +4270,6 @@ ignoring option `%s' due to invalid debug level specification", warning ("`-g%s': unknown or unsupported -g option", arg); } -/* Decode the first argument in the argv as a language-independent option. - Return the number of strings consumed. */ - -static unsigned int -independent_decode_option (char **argv) -{ - char *arg = argv[0]; - - if (arg[0] != '-' || arg[1] == 0) - return 1; - - arg++; - - if (*arg == 'f') - return decode_f_option (arg + 1); - - return 0; -} - /* Decode -m switches. */ /* Decode the switch -mNAME. */ @@ -4783,9 +4728,6 @@ parse_options_and_default_flags (int argc, char **argv) /* Give the language a chance to decode the option for itself. */ processed = handle_option (argc - i, argv + i, lang_mask); - if (!processed) - processed = independent_decode_option (argv + i); - if (processed) i += processed; else