From 530b44094354758d0dea5374188caa6863647114 Mon Sep 17 00:00:00 2001 From: qing zhao Date: Wed, 6 May 2020 10:46:09 -0700 Subject: [PATCH] add a new option -flarge-source-files. gcc/ChangeLog: PR c/94230 * common.opt: Add -flarge-source-files. * doc/invoke.texi: Document it. * toplev.c (process_options): set line_table->default_range_bits to 0 when flag_large_source_files is true. gcc/c-family/ChangeLog: PR c/94230 * c-indentation.c (get_visual_column): Add a hint to use the new -flarge-source-files option. gcc/testsuite/ChangeLog: PR c/94230 * gcc.dg/plugin/location-overflow-test-1.c (fn_1): New message to provide hint to use the new -flarge-source-files option. --- gcc/ChangeLog | 8 ++++++++ gcc/c-family/ChangeLog | 6 ++++++ gcc/c-family/c-indentation.c | 5 +++++ gcc/common.opt | 5 +++++ gcc/doc/invoke.texi | 19 +++++++++++++++++-- gcc/testsuite/ChangeLog | 6 ++++++ .../gcc.dg/plugin/location-overflow-test-1.c | 2 +- gcc/toplev.c | 3 +++ 8 files changed, 51 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bc27083b7d3..18800ec605a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2020-05-06 qing zhao + + PR c/94230 + * common.opt: Add -flarge-source-files. + * doc/invoke.texi: Document it. + * toplev.c (process_options): set line_table->default_range_bits + to 0 when flag_large_source_files is true. + 2020-05-06 Uroš Bizjak PR target/94913 diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index fe6cfe72116..a7faf829bd6 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2020-05-06 qing zhao + + PR c/94230 + * c-indentation.c (get_visual_column): Add a hint to use the new + -flarge-source-files option. + 2020-05-05 Stefan Schulze Frielinghaus * c-attribs.c (handle_vector_size_attribute): Add attribute diff --git a/gcc/c-family/c-indentation.c b/gcc/c-family/c-indentation.c index f737555db0e..9fba3bcc67c 100644 --- a/gcc/c-family/c-indentation.c +++ b/gcc/c-family/c-indentation.c @@ -67,6 +67,11 @@ get_visual_column (expanded_location exploc, location_t loc, "%<-Wmisleading-indentation%> is disabled from this point" " onwards, since column-tracking was disabled due to" " the size of the code/headers"); + if (!flag_large_source_files) + inform (loc, + "adding %<-flarge-source-files%> will allow for more" + " column-tracking support, at the expense of compilation" + " time and memory"); } return false; } diff --git a/gcc/common.opt b/gcc/common.opt index d33383b523c..30d05734d16 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -1609,6 +1609,11 @@ fkeep-gc-roots-live Common Undocumented Report Var(flag_keep_gc_roots_live) Optimization ; Always keep a pointer to a live memory block +flarge-source-files +Common Report Var(flag_large_source_files) Init(0) +Improve GCC's ability to track column numbers in large source files, +at the expense of slower compilation. + floop-parallelize-all Common Report Var(flag_loop_parallelize_all) Optimization Mark all loops as parallel. diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 3537a81d962..c97318f0465 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -574,8 +574,8 @@ Objective-C and Objective-C++ Dialects}. -dD -dI -dM -dN -dU @gol -fdebug-cpp -fdirectives-only -fdollars-in-identifiers @gol -fexec-charset=@var{charset} -fextended-identifiers @gol --finput-charset=@var{charset} -fmacro-prefix-map=@var{old}=@var{new} @gol --fmax-include-depth=@var{depth} @gol +-finput-charset=@var{charset} -flarge-source-files @gol +-fmacro-prefix-map=@var{old}=@var{new} -fmax-include-depth=@var{depth} @gol -fno-canonical-system-headers -fpch-deps -fpch-preprocess @gol -fpreprocessed -ftabstop=@var{width} -ftrack-macro-expansion @gol -fwide-exec-charset=@var{charset} -fworking-directory @gol @@ -14174,6 +14174,21 @@ This option may be useful in conjunction with the @option{-B} or perform additional processing of the program source between normal preprocessing and compilation. +@item -flarge-source-files +@opindex flarge-source-files +Adjust GCC to expect large source files, at the expense of slower +compilation and higher memory usage. + +Specifically, GCC normally tracks both column numbers and line numbers +within source files and it normally prints both of these numbers in +diagnostics. However, once it has processed a certain number of source +lines, it stops tracking column numbers and only tracks line numbers. +This means that diagnostics for later lines do not include column numbers. +It also means that options like @option{-Wmisleading-indentation} cease to work +at that point, although the compiler prints a note if this happens. +Passing @option{-flarge-source-files} significantly increases the number +of source lines that GCC can process before it stops tracking columns. + @end table @node Assembler Options diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ccdbf989089..6aa43787122 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2020-05-06 qing zhao + + PR c/94230 + * gcc.dg/plugin/location-overflow-test-1.c (fn_1): New message to + provide hint to use the new -flarge-source-files option. + 2020-05-06 Uroš Bizjak PR target/94913 diff --git a/gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c b/gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c index 1a80a668a0f..a3ac12d3b46 100644 --- a/gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c +++ b/gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c @@ -13,7 +13,7 @@ int fn_1 (int flag) { int x = 4, y = 5; - if (flag) x = 3; y = 2; /* { dg-message "-:disabled from this point" } */ + if (flag) x = 3; y = 2; /* { dg-message "-:disabled from this point" "adding '-flarge-source-files'" } */ return x * y; } diff --git a/gcc/toplev.c b/gcc/toplev.c index 5c026feece2..96316fbd23b 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1854,6 +1854,9 @@ process_options (void) hash_table_sanitize_eq_limit = param_hash_table_verification_limit; + if (flag_large_source_files) + line_table->default_range_bits = 0; + /* Please don't change global_options after this point, those changes won't be reflected in optimization_{default,current}_node. */ } -- 2.30.2