/* C/ObjC/C++ command line option handling.
- Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Neil Booth.
warn_return_type = value;
warn_sequence_point = value; /* Was C only. */
warn_switch = value;
- set_Wstrict_aliasing (value);
+ if (warn_strict_aliasing == -1)
+ set_Wstrict_aliasing (value);
warn_address = value;
- warn_strict_overflow = value;
+ if (warn_strict_overflow == -1)
+ warn_strict_overflow = value;
warn_array_bounds = value;
+ warn_volatile_register_var = value;
/* Only warn about unknown pragmas that are not in system
headers. */
/* -Wextra implies -Wtype-limits, -Wclobbered,
-Wempty-body, -Wsign-compare,
-Wmissing-field-initializers, -Wmissing-parameter-type
- -Wold-style-declaration, and -Woverride-init,
+ -Wold-style-declaration, -Woverride-init and -Wignored-qualifiers
but not if explicitly overridden. */
if (warn_type_limits == -1)
warn_type_limits = extra_warnings;
warn_old_style_declaration = extra_warnings;
if (warn_override_init == -1)
warn_override_init = extra_warnings;
+ if (warn_ignored_qualifiers == -1)
+ warn_ignored_qualifiers = extra_warnings;
/* -Wpointer_sign is disabled by default, but it is enabled if any
of -Wall or -pedantic are given. */
if (warn_pointer_sign == -1)
warn_pointer_sign = 0;
+ if (warn_strict_aliasing == -1)
+ warn_strict_aliasing = 0;
+ if (warn_strict_overflow == -1)
+ warn_strict_overflow = 0;
+
/* -Woverlength-strings is off by default, but is enabled by -pedantic.
It is never enabled in C++, as the minimum limit is not normative
in that standard. */
/* Adjust various flags for C++ based on command-line settings. */
if (c_dialect_cxx ())
{
- if (!flag_permissive)
- {
- flag_pedantic_errors = 1;
- cpp_opts->pedantic_errors = 1;
- }
if (!flag_no_inline)
{
flag_inline_trees = 1;
if (version_flag)
c_common_print_pch_checksum (stderr);
+ /* Has to wait until now so that cpplib has its hash table. */
+ init_pragma ();
+
if (flag_preprocess_only)
{
finish_options ();
return false;
}
- /* Has to wait until now so that cpplib has its hash table. */
- init_pragma ();
-
return true;
}
if (++i >= num_in_fnames)
break;
cpp_undef_all (parse_in);
+ cpp_clear_file_cache (parse_in);
this_input_filename
= cpp_read_main_file (parse_in, in_fnames[i]);
/* If an input file is missing, abandon further compilation.
/* We want -Wno-long-long to override -pedantic -std=non-c99
and/or -Wtraditional, whatever the ordering. */
cpp_opts->warn_long_long
- = warn_long_long && ((!flag_isoc99 && pedantic) || warn_traditional);
+ = warn_long_long && ((pedantic
+ && (c_dialect_cxx ()
+ ? cxx_dialect == cxx98
+ : !flag_isoc99))
+ || warn_traditional);
/* Similarly with -Wno-variadic-macros. No check for c99 here, since
this also turns off warnings about GCCs extension. */
case 'M': /* Dump macros only. */
case 'N': /* Dump names. */
case 'D': /* Dump definitions. */
+ case 'U': /* Dump used macros. */
flag_dump_macros = c;
break;