]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Makefile.in: Update.
authorNeil Booth <neil@gcc.gnu.org>
Sat, 21 Jun 2003 15:59:31 +0000 (15:59 +0000)
committerNeil Booth <neil@gcc.gnu.org>
Sat, 21 Jun 2003 15:59:31 +0000 (15:59 +0000)
* Makefile.in: Update.
* c-opts.c (c_common_handle_option): Don't return -1.
* common.opt: New switches.
* opts.c: Include rtl.h, ggc.h and output.h.
(find_opt): Only stop searching when input switch compares
less than the stored switch.  Continue searching if greater.
(handle_option): No need to handle negative return values.
(common_handle_option): Handle new switches.
(set_fast_math_flags, fast_math_flags_set_p): New.
* toplev.c (set_fast_math_flags, fast_math_flags_set_p):
Move to opts.c.
(decode_f_option): Some switches moved to opts.c.
(parse_options_and_default_flags): No need to cater for negative
return values.
f:
* top.c (ffe_handle_option): No need to return -1 any more.

From-SVN: r68307

gcc/Makefile.in
gcc/c-opts.c
gcc/common.opt
gcc/f/top.c
gcc/opts.c
gcc/toplev.c

index 51255061ac356af823b2d71f742de28055a7add8..ccef73b3956af680b94b3913f23bd15b22fe320f 100644 (file)
@@ -1482,7 +1482,7 @@ diagnostic.o : diagnostic.c diagnostic.h real.h diagnostic.def \
    $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(TM_P_H) flags.h $(GGC_H) \
    input.h toplev.h intl.h langhooks.h $(LANGHOOKS_DEF_H)
 opts.o : opts.c opts.h options.h toplev.h $(CONFIG_H) $(SYSTEM_H) \
-       coretypes.h $(TREE_H) $(TM_H) $(LANGHOOKS_H)
+       coretypes.h $(TREE_H) $(TM_H) $(LANGHOOKS_H) $(GGC_H) $(RTL_H) output.h
 toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) \
    function.h flags.h xcoffout.h input.h $(INSN_ATTR_H) output.h diagnostic.h \
    debug.h insn-config.h intl.h $(RECOG_H) Makefile toplev.h \
index 4d6ccd2932acb6c4d9487c2f55600a21f4d74a8f..6e8cf6e4be7686b194ccfebbc8d0476736ca5842 100644 (file)
@@ -820,8 +820,8 @@ c_common_handle_option (size_t scode, const char *arg, int value)
     case OPT_ffixed_form:
     case OPT_ffixed_line_length_:
       /* Fortran front end options ignored when preprocessing only.  */
-      if (flag_preprocess_only)
-        result = -1;
+      if (!flag_preprocess_only)
+        result = 0;
       break;
 
     case OPT_ffor_scope:
index 7ce20bb8ee5b048c2d27ade54323734e185df574..d475cad1c0a6d8091fb6aca58f51562759d60c15 100644 (file)
@@ -139,6 +139,39 @@ Common Joined
 dumpbase
 Common Separate
 
+falign-functions=
+Common RejectNegative Joined UInteger
+
+falign-jumps=
+Common RejectNegative Joined UInteger
+
+falign-labels=
+Common RejectNegative Joined UInteger
+
+falign-loops=
+Common RejectNegative Joined UInteger
+
+fcall-saved-
+Common Joined RejectNegative
+
+fcall-used-
+Common Joined RejectNegative
+
+ffast-math
+Common
+
+ffixed-
+Common Joined RejectNegative
+
+fstack-limit-register=
+Common RejectNegative Joined
+
+fstack-limit-symbol=
+Common RejectNegative Joined
+
+ftls-model=
+Common Joined RejectNegative
+
 g
 Common JoinedOrMissing
 
index 7ca2db998b86b3923cb0ca7e0bb9fb148f0b6051..89d3e96e3101d0c0693bb503afcb8aeb83b9bdeb 100644 (file)
@@ -239,8 +239,6 @@ ffe_handle_option (size_t scode, const char *arg, int value)
 
     case OPT_ffixed_form:
       ffe_set_is_free_form (!value);
-      if (value)
-       return -1;
       break;
 
     case OPT_fpedantic:
@@ -564,16 +562,12 @@ ffe_handle_option (size_t scode, const char *arg, int value)
 
     case OPT_ffixed_line_length_:
       if (strcmp (arg, "none") == 0)
-       {
-         ffe_set_fixed_line_length (0);
-         return -1;
-       }
+       ffe_set_fixed_line_length (0);
       else if (ffe_is_digit_string_ (arg))
-       {
-         ffe_set_fixed_line_length (atol (arg));
-         return -1;
-       }
-      return 0;
+       ffe_set_fixed_line_length (atol (arg));
+      else
+       return 0;
+      break;
 
     case OPT_Wcomment:
     case OPT_Wcomments:
index ddd116938ab141e3c23976891df9ed9b637fb21c..c622fd9b678e2acc2a77956750895e7dec6a0368 100644 (file)
@@ -24,6 +24,9 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "coretypes.h"
 #include "tm.h"
 #include "tree.h"
+#include "rtl.h"
+#include "ggc.h"
+#include "output.h"
 #include "langhooks.h"
 #include "opts.h"
 #include "options.h"
@@ -196,8 +199,11 @@ find_opt (const char *input, int lang_mask)
              for (md = md + 1; md < cl_options_count; md++)
                {
                  opt_len = cl_options[md].opt_len;
-                 if (strncmp (input, cl_options[md].opt_text, opt_len))
+                 comp = strncmp (input, cl_options[md].opt_text, opt_len);
+                 if (comp < 0)
                    break;
+                 if (comp > 0)
+                   continue;
                  if (input[opt_len] == '\0')
                    return md;
                  if (cl_options[md].flags & lang_mask
@@ -237,7 +243,7 @@ handle_option (int argc ATTRIBUTE_UNUSED, char **argv, int lang_mask)
   const char *opt, *arg = 0;
   char *dup = 0;
   int value = 1;
-  int result = 0, temp;
+  int result = 0;
   const struct cl_option *option;
 
   opt = argv[0];
@@ -320,17 +326,12 @@ handle_option (int argc ATTRIBUTE_UNUSED, char **argv, int lang_mask)
        }
 
       if (option->flags & lang_mask)
-       {
-         temp = (*lang_hooks.handle_option) (opt_index, arg, value);
-         if (temp <= 0)
-           result = temp;
-       }
+       if ((*lang_hooks.handle_option) (opt_index, arg, value) == 0)
+         result = 0;
 
-      if (result > 0 && (option->flags & CL_COMMON))
-       {
-         if (common_handle_option (opt_index, arg, value) == 0)
-           result = 0;
-       }
+      if (result && (option->flags & CL_COMMON))
+       if (common_handle_option (opt_index, arg, value) == 0)
+         result = 0;
     }
 
  done:
@@ -520,6 +521,65 @@ common_handle_option (size_t scode, const char *arg,
       dump_base_name = arg;
       break;
 
+    case OPT_falign_functions_:
+      align_functions = value;
+      break;
+
+    case OPT_falign_jumps_:
+      align_jumps = value;
+      break;
+
+    case OPT_falign_labels_:
+      align_labels = value;
+      break;
+
+    case OPT_falign_loops_:
+      align_loops = value;
+      break;
+
+    case OPT_fcall_used_:
+      fix_register (arg, 0, 1);
+      break;
+
+    case OPT_fcall_saved_:
+      fix_register (arg, 0, 0);
+      break;
+
+    case OPT_ffast_math:
+      set_fast_math_flags (value);
+      break;
+
+    case OPT_ffixed_:
+      fix_register (arg, 1, 1);
+      break;
+
+    case OPT_fstack_limit_register_:
+      {
+       int reg = decode_reg_name (arg);
+       if (reg < 0)
+         error ("unrecognized register name \"%s\"", arg);
+       else
+         stack_limit_rtx = gen_rtx_REG (Pmode, reg);
+      }
+      break;
+
+    case OPT_fstack_limit_symbol_:
+      stack_limit_rtx = gen_rtx_SYMBOL_REF (Pmode, ggc_strdup (arg));
+      break;
+
+    case OPT_ftls_model_:
+      if (!strcmp (arg, "global-dynamic"))
+       flag_tls_default = TLS_MODEL_GLOBAL_DYNAMIC;
+      else if (!strcmp (arg, "local-dynamic"))
+       flag_tls_default = TLS_MODEL_LOCAL_DYNAMIC;
+      else if (!strcmp (arg, "initial-exec"))
+       flag_tls_default = TLS_MODEL_INITIAL_EXEC;
+      else if (!strcmp (arg, "local-exec"))
+       flag_tls_default = TLS_MODEL_LOCAL_EXEC;
+      else
+       warning ("unknown tls-model \"%s\"", arg);
+      break;
+
     case OPT_g:
       decode_g_option (arg);
       break;
@@ -619,3 +679,26 @@ set_Wunused (int setting)
   warn_unused_variable = setting;
   warn_unused_value = setting;
 }
+
+/* The following routines are useful in setting all the flags that
+   -ffast-math and -fno-fast-math imply.  */
+void
+set_fast_math_flags (int set)
+{
+  flag_trapping_math = !set;
+  flag_unsafe_math_optimizations = set;
+  flag_finite_math_only = set;
+  flag_errno_math = !set;
+  if (set)
+    flag_signaling_nans = 0;
+}
+
+/* Return true iff flags are set as if -ffast-math.  */
+bool
+fast_math_flags_set_p (void)
+{
+  return (!flag_trapping_math
+         && flag_unsafe_math_optimizations
+         && flag_finite_math_only
+         && !flag_errno_math);
+}
index 4bee42e153ab3ae40952e55b4c0c080a537ea12d..47845bd7ab1f3a799b11d741c7fda297a9b57453 100644 (file)
@@ -1548,30 +1548,6 @@ static const lang_independent_options W_options[] =
    N_ ("Warn about code which might break the strict aliasing rules") }
 };
 
-/* The following routines are useful in setting all the flags that
-   -ffast-math and -fno-fast-math imply.  */
-
-void
-set_fast_math_flags (int set)
-{
-  flag_trapping_math = !set;
-  flag_unsafe_math_optimizations = set;
-  flag_finite_math_only = set;
-  flag_errno_math = !set;
-  if (set)
-    flag_signaling_nans = 0;
-}
-
-/* Return true iff flags are set as if -ffast-math.  */
-bool
-fast_math_flags_set_p (void)
-{
-  return (!flag_trapping_math
-         && flag_unsafe_math_optimizations
-         && flag_finite_math_only
-         && !flag_errno_math);
-}
-
 /* Output files for assembler code (real compiler output)
    and debugging dumps.  */
 
@@ -4197,11 +4173,7 @@ decode_f_option (const char *arg)
        }
     }
 
-  if (!strcmp (arg, "fast-math"))
-    set_fast_math_flags (1);
-  else if (!strcmp (arg, "no-fast-math"))
-    set_fast_math_flags (0);
-  else if ((option_value = skip_leading_substring (arg, "inline-limit-"))
+  if ((option_value = skip_leading_substring (arg, "inline-limit-"))
           || (option_value = skip_leading_substring (arg, "inline-limit=")))
     {
       int val =
@@ -4219,55 +4191,10 @@ decode_f_option (const char *arg)
            set_param_value ("min-inline-insns", 10);
        }
     }
-  else if ((option_value = skip_leading_substring (arg, "tls-model=")))
-    {
-      if (strcmp (option_value, "global-dynamic") == 0)
-       flag_tls_default = TLS_MODEL_GLOBAL_DYNAMIC;
-      else if (strcmp (option_value, "local-dynamic") == 0)
-       flag_tls_default = TLS_MODEL_LOCAL_DYNAMIC;
-      else if (strcmp (option_value, "initial-exec") == 0)
-       flag_tls_default = TLS_MODEL_INITIAL_EXEC;
-      else if (strcmp (option_value, "local-exec") == 0)
-       flag_tls_default = TLS_MODEL_LOCAL_EXEC;
-      else
-       warning ("`%s': unknown tls-model option", arg - 2);
-    }
 #ifdef INSN_SCHEDULING
   else if ((option_value = skip_leading_substring (arg, "sched-verbose=")))
     fix_sched_param ("verbose", option_value);
 #endif
-  else if ((option_value = skip_leading_substring (arg, "fixed-")))
-    fix_register (option_value, 1, 1);
-  else if ((option_value = skip_leading_substring (arg, "call-used-")))
-    fix_register (option_value, 0, 1);
-  else if ((option_value = skip_leading_substring (arg, "call-saved-")))
-    fix_register (option_value, 0, 0);
-  else if ((option_value = skip_leading_substring (arg, "align-loops=")))
-    align_loops = read_integral_parameter (option_value, arg - 2, align_loops);
-  else if ((option_value = skip_leading_substring (arg, "align-functions=")))
-    align_functions
-      = read_integral_parameter (option_value, arg - 2, align_functions);
-  else if ((option_value = skip_leading_substring (arg, "align-jumps=")))
-    align_jumps = read_integral_parameter (option_value, arg - 2, align_jumps);
-  else if ((option_value = skip_leading_substring (arg, "align-labels=")))
-    align_labels
-      = read_integral_parameter (option_value, arg - 2, align_labels);
-  else if ((option_value
-           = skip_leading_substring (arg, "stack-limit-register=")))
-    {
-      int reg = decode_reg_name (option_value);
-      if (reg < 0)
-       error ("unrecognized register name `%s'", option_value);
-      else
-       stack_limit_rtx = gen_rtx_REG (Pmode, reg);
-    }
-  else if ((option_value
-           = skip_leading_substring (arg, "stack-limit-symbol=")))
-    {
-      const char *nm;
-      nm = ggc_strdup (option_value);
-      stack_limit_rtx = gen_rtx_SYMBOL_REF (Pmode, nm);
-    }
   else if ((option_value
            = skip_leading_substring (arg, "message-length=")))
     output_set_maximum_length
@@ -4896,25 +4823,16 @@ parse_options_and_default_flags (int argc, char **argv)
   /* Perform normal command line switch decoding.  */
   for (i = 1; i < argc;)
     {
-      int lang_processed;
-      int indep_processed;
+      int processed;
 
       /* Give the language a chance to decode the option for itself.  */
-      lang_processed = handle_option (argc - i, argv + i, lang_mask);
+      processed = handle_option (argc - i, argv + i, lang_mask);
 
-      if (lang_processed >= 0)
-       /* Now see if the option also has a language independent meaning.
-          Some options are both language specific and language independent,
-          eg --help.  */
-       indep_processed = independent_decode_option (argv + i);
-      else
-       {
-         lang_processed = -lang_processed;
-         indep_processed = 0;
-       }
+      if (!processed)
+       processed = independent_decode_option (argv + i);
 
-      if (lang_processed || indep_processed)
-       i += MAX (lang_processed, indep_processed);
+      if (processed)
+       i += processed;
       else
        {
          const char *option = NULL;