[PATCH] get source line for diagnostic from preprocessed file / PR preprocessor/79106

Jeff Law law@redhat.com
Mon Jan 27 20:26:00 GMT 2020


On Mon, 2019-12-16 at 11:18 +0000, Bader, Lucas wrote:
> Hello,
> 
> within a compile cluster, only the preprocessed output of GCC is transferred to remote nodes for compilation. 
> When GCC produces advanced diagnostics (with -fdiagnostics-show-caret), e.g. prints out the affected source
> line and fixit hints, it attempts to read the source file again, even when compiling a preprocessed file (-fpreprocessed). 
> This leads to wrong diagnostics when building with a compile cluster, or, more generally, when changing or deleting the original source file.
> 
> This patch attempts to alter the behavior by implementing a location_get_source_line_preprocessed 
> function that can be used in diagnostic-show-locus.c in case a preprocessed file is compiled.
> There was some previous discussion on this behavior on PR preprocessor/79106.
> 
> This is my first patch to GCC, so in case something is wrong with the format, please let me know.
> 
> Best regards
> Lucas
> 
> 2019-12-16  Lucas Bader  <lucas.bader@sap.com>
> 
> 	PR preprocessor/79106
> 	* c-opts.c (c_common_handle_option): pass -fpreprocessed 
> 	option value to global diagnostic configuration
> 	
> 	* diagnostic-show-locus.c (layout::layout): read line from source or preprocessed
> 	file based on -fpreprocessed value
> 	(source_line::source_line): read line from source or preprocessed
> 	file based on -fpreprocessed value
> 	(layout::print_line): read line from source or preprocessed
> 	file based on -fpreprocessed value
> 	
> 	* diagnostic.h (diagnostic_context): new members for reading
> 	source lines from preprocessed files
> 	* diagnostic.c (diagnostic_initialize): initialize new members
> 	
> 	* input.c (location_get_source_line_preprocessed): new function
> 	to read source lines from preprocessed files
> 	(test_reading_source_line_preprocessed): new test case
> 	(input_c_tests): execute new test case
> 	
> 	* opts-global.c (read_cmdline_options): pass input filename to global
> 	diagnostic context
Note this is not forgotten.  But it seems more appropriate for gcc-11
rather than gcc-10.

Jeff
> 



More information about the Gcc-patches mailing list