# define TARGET_SYSTEM_ROOT NULL
#endif
+#ifndef TARGET_OPTF
+#define TARGET_OPTF(ARG)
+#endif
+
static int saved_lineno;
/* CPP's options. */
/* If -Wunused-macros. */
static bool warn_unused_macros;
+/* If -Wvariadic-macros. */
+static bool warn_variadic_macros = true;
+
/* Number of deferred options. */
static size_t deferred_count;
error ("macro name missing after \"%s\"", opt);
break;
+ case OPT_F:
case OPT_I:
case OPT_idirafter:
case OPT_isysroot:
cpp_opts->print_include_names = 1;
break;
+ case OPT_F:
+ TARGET_OPTF (xstrdup (arg));
+ break;
+
case OPT_I:
if (strcmp (arg, "-"))
add_path (xstrdup (arg), BRACKET, 0);
warn_unused_macros = value;
break;
+ case OPT_Wvariadic_macros:
+ warn_variadic_macros = value;
+ break;
+
case OPT_Wwrite_strings:
if (!c_dialect_cxx ())
flag_const_strings = value;
warning ("switch \"%s\" is no longer supported", option->opt_text);
break;
- case OPT_fabi_version_:
- flag_abi_version = value;
- break;
-
case OPT_faccess_control:
flag_access_control = value;
break;
*pfilename = this_input_filename
= cpp_read_main_file (parse_in, in_fnames[0]);
+ /* Don't do any compilation or preprocessing if there is no input file. */
if (this_input_filename == NULL)
- return true;
+ {
+ errorcount++;
+ return false;
+ }
- if (flag_preprocess_only && flag_working_directory)
+ if (flag_working_directory
+ && flag_preprocess_only && ! flag_no_line_commands)
pp_dir_change (parse_in, get_src_pwd ());
return flag_preprocess_only;
cpp_opts->char_precision = TYPE_PRECISION (char_type_node);
cpp_opts->int_precision = TYPE_PRECISION (integer_type_node);
cpp_opts->wchar_precision = TYPE_PRECISION (wchar_type_node);
- cpp_opts->unsigned_wchar = TREE_UNSIGNED (wchar_type_node);
+ cpp_opts->unsigned_wchar = TYPE_UNSIGNED (wchar_type_node);
cpp_opts->bytes_big_endian = BYTES_BIG_ENDIAN;
/* This can't happen until after wchar_precision and bytes_big_endian
/* Initialize the integrated preprocessor after debug output has been
initialized; loop over each input file. */
void
-c_common_parse_file (int set_yydebug ATTRIBUTE_UNUSED)
+c_common_parse_file (int set_yydebug)
{
- unsigned file_index;
-
#if YYDEBUG != 0
yydebug = set_yydebug;
#else
- warning ("YYDEBUG not defined");
+ if (set_yydebug)
+ warning ("YYDEBUG not defined");
#endif
- file_index = 0;
-
- do
- {
- if (file_index > 0)
- {
- /* Reset the state of the parser. */
- c_reset_state();
-
- /* Reset cpplib's macros and start a new file. */
- cpp_undef_all (parse_in);
- main_input_filename = this_input_filename
- = cpp_read_main_file (parse_in, in_fnames[file_index]);
- if (this_input_filename == NULL)
- break;
- }
- finish_options ();
- if (file_index == 0)
- pch_init();
- c_parse_file ();
+ if (num_in_fnames > 1)
+ fatal_error ("sorry, inter-module analysis temporarily out of commission");
- file_index++;
- } while (file_index < num_in_fnames);
-
+ finish_options ();
+ pch_init ();
+ push_file_scope ();
+ c_parse_file ();
finish_file ();
+ pop_file_scope ();
}
/* Common finish hook for the C, ObjC and C++ front ends. */
cpp_opts->warn_long_long
= warn_long_long && ((!flag_isoc99 && pedantic) || warn_traditional);
+ /* Similarly with -Wno-variadic-macros. No check for c99 here, since
+ this also turns off warnings about GCCs extension. */
+ cpp_opts->warn_variadic_macros
+ = warn_variadic_macros && (pedantic || warn_traditional);
+
/* If we're generating preprocessor output, emit current directory
if explicitly requested or if debugging information is enabled.
??? Maybe we should only do it for debugging formats that
flag_no_nonansi_builtin = iso;
flag_isoc94 = c94;
flag_isoc99 = 0;
- flag_writable_strings = 0;
}
/* Set the C 99 standard (without GNU extensions if ISO). */
flag_iso = iso;
flag_isoc99 = 1;
flag_isoc94 = 1;
- flag_writable_strings = 0;
}
/* Set the C++ 98 standard (without GNU extensions if ISO). */