Hi!
I've investigated a bit, because some of the following confused me while working with some local 9.2-based branch.

Documentation issues:
(0) See patch for install.texi at the bottom, two possible values are not documented. Ok for master? Backports? (1) For me it seems confusing to have 'tree' and 'gimple' values, but not sure how to solve this. (2) Developer has to look into configure scripts to understand which macro will be defined. E.q. 'misc' means "CHECKING_P". (3) Install.texi IMHO doesn't properly describe what happens when --enable-checking is used without "=list". Maybe we should explicitly tell this means same as "=yes". (4) Statement "This is ‘yes,extra’ by default when building from the source repository or snapshots." is wrong, because 'snapshots' may relate to released branches (e.q. GCC 9-20200125 Snapshot), and gcc/DEV-PHASE is empty there. (5) Statement "‘extra’ adds for ‘misc’ checking extra checks ..." is also confusing, one can run 'configure --enable-checking=extra' and will have only ENABLE_EXTRA_CHECKING, but not CHECKING_P, and in common.opt flag_checking will have Init(0).

Behavior issues:
(6) It is not obvious to have default --enable-checking=release on any commit in releases/* branches (DEV-PHASE is empty there). IMHO it's enough 'experimental' when picking for example some commit between 9.1 and 9.2. This also can confuse 'git bisect run' scenario when good revision is old enough and bad revision is on release branch. See also (4). (7) Running "configure --enable-checking" means less (!) checks on master branch (where DEV-PHASE is experimental). Default is "yes+extra" and you get only "yes" with that option. (8) Why we always start with "release" values ('assert'+'runtime') as default? If developer runs "configure --enable-checking=df,rtl,tree" probably it should mean only picked values are enabled. Why we silently add 'assert' and 'runtime' into that set?

I haven't tried to find additional issues with related '--enable-stage1-checking' option.

Roman

PS. I see some lines have more than 80 chars in install.texi, few of them were added recently while cleaning references to SVN. Patch fixes this only forthe paragraph it touches.
--

gcc/ChangeLog:

2020-01-29  Roman Zhuykov <zhr...@ispras.ru>

    * doc/install.texi: Document 'types' and 'gimple' values for
    '--enable-checking' configure option.

diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -1845,19 +1845,19 @@ consistency checks of the requested complexity.  This does not change the
 generated code, but adds error checking within the compiler.  This will
 slow down the compiler and may only work properly if you are building
 the compiler with GCC@.  This is @samp{yes,extra} by default when building
-from the source repository or snapshots, but @samp{release} for releases.  The default
-for building the stage1 compiler is @samp{yes}.  More control
+from the source repository or snapshots, but @samp{release} for releases.
+The default for building the stage1 compiler is @samp{yes}.  More control
 over the checks may be had by specifying @var{list}.  The categories of
 checks available are @samp{yes} (most common checks
-@samp{assert,misc,tree,gc,rtlflag,runtime}), @samp{no} (no checks at
-all), @samp{all} (all but @samp{valgrind}), @samp{release} (cheapest
+@samp{assert,misc,tree,gc,gimple,rtlflag,runtime,types}), @samp{no} (no checks
+at all), @samp{all} (all but @samp{valgrind}), @samp{release} (cheapest
 checks @samp{assert,runtime}) or @samp{none} (same as @samp{no}).
 Individual checks can be enabled with these flags @samp{assert},
-@samp{df}, @samp{fold}, @samp{gc}, @samp{gcac}, @samp{misc}, @samp{rtl},
-@samp{rtlflag}, @samp{runtime}, @samp{tree}, @samp{extra} and @samp{valgrind}.
-@samp{extra} adds for @samp{misc} checking extra checks that might affect
-code generation and should therefore not differ between stage1 and later
-stages.
+@samp{df}, @samp{fold}, @samp{gc}, @samp{gcac}, @samp{gimple}, @samp{misc},
+@samp{rtl}, @samp{rtlflag}, @samp{runtime}, @samp{tree}, @samp{types},
+@samp{extra} and @samp{valgrind}. @samp{extra} adds for @samp{misc} checking +extra checks that might affect code generation and should therefore not differ
+between stage1 and later stages.

 The @samp{valgrind} check requires the external @command{valgrind}
 simulator, available from @uref{http://valgrind.org/}.  The



Reply via email to