Skip to content
Snippets Groups Projects
  • Joseph Myers's avatar
    148e4216
    re PR preprocessor/34695 (Preprocessor warning->error conversion from -Werror is silent) · 148e4216
    Joseph Myers authored
    	PR preprocessor/34695
    
    gcc:
    	* Makefile.in (c-opts.o): Depend on c-tree.h.
    	* c-common.c: Move down include of diagnostic.h.
    	(done_lexing, c_cpp_error): New.
    	* c-common.h (done_lexing): Declare.
    	* c-decl.c (c_write_global_declarations): Don't check cpp_errors
    	(parse_in).
    	* c-opts.c: Include c-tree.h.
    	(c_common_init_options): Set preprocessor error callback.
    	(c_common_handle_option): Do not set preprocessor
    	inhibit_warnings, warnings_are_errors, warn_system_headers,
    	pedantic_errors or inhibit_warnings flags.
    	(c_common_post_options): Do not check cpp_errors (parse_in).
    	(c_common_finish): Do not output dependencies if there were
    	errors.  Do not check return value of cpp_finish.
    	* c-ppoutput.c (pp_file_change): Set input_location.
    	* c-tree.h (c_cpp_error): Declare.
    	* diagnostic.c (diagnostic_set_info_translated): Also initialize
    	override_column.
    	(diagnostic_build_prefix): Check override_column.
    	* diagnostic.h (diagnostic_info): Add override_column field.
    	(diagnostic_override_column): Define.
    
    gcc/cp:
    	* cp-tree.h (cp_cpp_error): Remove.
    	* error.c (cp_cpp_error): Remove.
    	* parser.c (cp_lexer_new_main): Set done_lexing instead of
    	client_diagnostic and error callback.
    
    gcc/fortran:
    	* cpp.c (cb_cpp_error): New.
    	(gfc_cpp_post_options): Don't set cpp_option->inhibit_warnings.
    	Don't check cpp_errors (cpp_in).
    	(gfc_cpp_init_0): Set cb->error.
    
    gcc/testsuite:
    	* gcc.dg/builtin-redefine.c, gcc.dg/cpp/redef2.c,
    	gcc.dg/cpp/redef3.c, gcc.dg/cpp/trad/redef2.c: Use dg-message
    	instead of dg-warning for "previous definition" messages.
    	* gcc.dg/cpp/Wvariadic-1.c, gcc.dg/cpp/Wvariadic-3.c: Expect
    	"warnings being treated as errors" message.
    	* gcc.dg/fltconst-1.c: Use -fshow-column.
    
    libcpp:
    	* makedepend.c: Remove.
    	* Makefile.in (makedepend_OBJS, makedepend$(EXEEXT)): Remove.
    	(all, clean, TAGS_SOURCES, include): Remove makedepend handling.
    	* directives.c (cpp_errors): Remove.
    	* errors.c (print_location, _cpp_begin_message, v_message):
    	Remove.
    	(cpp_error, cpp_error_with_line): Always use error callback.
    	(cpp_error, cpp_error_with_line, cpp_errno): Return bool.
    	* include/cpplib.h (cpp_options): Remove pedantic_errors,
    	inhibit_warnings, warn_system_headers, inhibit_errors,
    	warnings_are_errors, client_diagnostic.
    	(cpp_callbacks): Add extra arguments to error callback; make it
    	return bool.
    	(cpp_finish): Return void.
    	(cpp_destroy): Remove inaccurate comment about return value.
    	(cpp_errors, CPP_DL_EXTRACT, CPP_DL_WARNING_P): Remove.
    	(CPP_DL_NOTE): Define.
    	* include/line-map.h (linemap_print_containing_files): Remove.
    	* init.c (cpp_finish): Do not check for or return number of
    	errors.
    	* internal.h (cpp_reader): Remove errors field.
    	* line-map.c (linemap_print_containing_files): Remove.
    	* macro.c (_cpp_create_definition): Use CPP_DL_NOTE for message
    	about previous definition.  Only emit it if previous diagnostic
    	was emitted.
    
    From-SVN: r145263
    148e4216
    History
    re PR preprocessor/34695 (Preprocessor warning->error conversion from -Werror is silent)
    Joseph Myers authored
    	PR preprocessor/34695
    
    gcc:
    	* Makefile.in (c-opts.o): Depend on c-tree.h.
    	* c-common.c: Move down include of diagnostic.h.
    	(done_lexing, c_cpp_error): New.
    	* c-common.h (done_lexing): Declare.
    	* c-decl.c (c_write_global_declarations): Don't check cpp_errors
    	(parse_in).
    	* c-opts.c: Include c-tree.h.
    	(c_common_init_options): Set preprocessor error callback.
    	(c_common_handle_option): Do not set preprocessor
    	inhibit_warnings, warnings_are_errors, warn_system_headers,
    	pedantic_errors or inhibit_warnings flags.
    	(c_common_post_options): Do not check cpp_errors (parse_in).
    	(c_common_finish): Do not output dependencies if there were
    	errors.  Do not check return value of cpp_finish.
    	* c-ppoutput.c (pp_file_change): Set input_location.
    	* c-tree.h (c_cpp_error): Declare.
    	* diagnostic.c (diagnostic_set_info_translated): Also initialize
    	override_column.
    	(diagnostic_build_prefix): Check override_column.
    	* diagnostic.h (diagnostic_info): Add override_column field.
    	(diagnostic_override_column): Define.
    
    gcc/cp:
    	* cp-tree.h (cp_cpp_error): Remove.
    	* error.c (cp_cpp_error): Remove.
    	* parser.c (cp_lexer_new_main): Set done_lexing instead of
    	client_diagnostic and error callback.
    
    gcc/fortran:
    	* cpp.c (cb_cpp_error): New.
    	(gfc_cpp_post_options): Don't set cpp_option->inhibit_warnings.
    	Don't check cpp_errors (cpp_in).
    	(gfc_cpp_init_0): Set cb->error.
    
    gcc/testsuite:
    	* gcc.dg/builtin-redefine.c, gcc.dg/cpp/redef2.c,
    	gcc.dg/cpp/redef3.c, gcc.dg/cpp/trad/redef2.c: Use dg-message
    	instead of dg-warning for "previous definition" messages.
    	* gcc.dg/cpp/Wvariadic-1.c, gcc.dg/cpp/Wvariadic-3.c: Expect
    	"warnings being treated as errors" message.
    	* gcc.dg/fltconst-1.c: Use -fshow-column.
    
    libcpp:
    	* makedepend.c: Remove.
    	* Makefile.in (makedepend_OBJS, makedepend$(EXEEXT)): Remove.
    	(all, clean, TAGS_SOURCES, include): Remove makedepend handling.
    	* directives.c (cpp_errors): Remove.
    	* errors.c (print_location, _cpp_begin_message, v_message):
    	Remove.
    	(cpp_error, cpp_error_with_line): Always use error callback.
    	(cpp_error, cpp_error_with_line, cpp_errno): Return bool.
    	* include/cpplib.h (cpp_options): Remove pedantic_errors,
    	inhibit_warnings, warn_system_headers, inhibit_errors,
    	warnings_are_errors, client_diagnostic.
    	(cpp_callbacks): Add extra arguments to error callback; make it
    	return bool.
    	(cpp_finish): Return void.
    	(cpp_destroy): Remove inaccurate comment about return value.
    	(cpp_errors, CPP_DL_EXTRACT, CPP_DL_WARNING_P): Remove.
    	(CPP_DL_NOTE): Define.
    	* include/line-map.h (linemap_print_containing_files): Remove.
    	* init.c (cpp_finish): Do not check for or return number of
    	errors.
    	* internal.h (cpp_reader): Remove errors field.
    	* line-map.c (linemap_print_containing_files): Remove.
    	* macro.c (_cpp_create_definition): Use CPP_DL_NOTE for message
    	about previous definition.  Only emit it if previous diagnostic
    	was emitted.
    
    From-SVN: r145263