static bool verbose;
/* If -lang-fortran seen. */
-static bool lang_fortran = false;
+bool lang_fortran = false;
/* Dependency output file. */
static const char *deps_file;
warn_pointer_arith = c_dialect_cxx ();
warn_write_strings = c_dialect_cxx();
+ /* By default, C99-like requirements for complex multiply and divide. */
+ flag_complex_method = 2;
+
deferred_opts = XNEWVEC (struct deferred_opt, argc);
result = lang_flags[c_language];
if (c_dialect_cxx ())
warn_sign_compare = value;
warn_switch = value;
- warn_strict_aliasing = value;
+ set_Wstrict_aliasing (value);
warn_address = value;
warn_strict_overflow = value;
warn_array_bounds = value;
flag_gen_declaration = 1;
break;
+ case OPT_femit_struct_debug_baseonly:
+ set_struct_debug_option ("base");
+ break;
+
+ case OPT_femit_struct_debug_reduced:
+ set_struct_debug_option ("dir:ord:sys,dir:gen:any,ind:base");
+ break;
+
+ case OPT_femit_struct_debug_detailed_:
+ set_struct_debug_option (arg);
+ break;
+
case OPT_idirafter:
add_path (xstrdup (arg), AFTER, 0, true);
break;
if (flag_objc_exceptions && !flag_objc_sjlj_exceptions)
flag_exceptions = 1;
- /* -Wextra implies -Wclobbered, -Wempty-body, -Wsign-compare,
+ /* -Wextra implies -Wtype-limits, -Wclobbered,
+ -Wempty-body, -Wsign-compare,
-Wmissing-field-initializers, -Wmissing-parameter-type
-Wold-style-declaration, and -Woverride-init,
but not if explicitly overridden. */
+ if (warn_type_limits == -1)
+ warn_type_limits = extra_warnings;
if (warn_clobbered == -1)
warn_clobbered = extra_warnings;
if (warn_empty_body == -1)
}
if (flag_inline_functions)
flag_inline_trees = 2;
- }
+ }
+
+ /* In C, -Wconversion enables -Wsign-conversion (unless disabled
+ through -Wno-sign-conversion). While in C++,
+ -Wsign-conversion needs to be requested explicitly. */
+ if (warn_sign_conversion == -1)
+ warn_sign_conversion = (c_dialect_cxx ()) ? 0 : warn_conversion;
+
/* Special format checking options don't work without -Wformat; warn if
they are used. */
if (warn_implicit_function_declaration == -1)
warn_implicit_function_declaration = flag_isoc99;
- /* C99 requires special handling of complex multiplication and division;
- -ffast-math and -fcx-limited-range are handled in process_options. */
- if (flag_isoc99)
- flag_complex_method = 2;
-
/* If we're allowing C++0x constructs, don't warn about C++0x
compatibility problems. */
- if (flag_cpp0x)
+ if (cxx_dialect == cxx0x)
warn_cxx0x_compat = 0;
if (flag_preprocess_only)
flag_no_gnu_keywords = iso;
flag_no_nonansi_builtin = iso;
flag_iso = iso;
+ cxx_dialect = cxx98;
}
/* Set the C++ 0x working draft "standard" (without GNU extensions if ISO). */
flag_no_gnu_keywords = iso;
flag_no_nonansi_builtin = iso;
flag_iso = iso;
- flag_cpp0x = 1;
+ cxx_dialect = cxx0x;
}
/* Handle setting implicit to ON. */