From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 9214 invoked by alias); 16 May 2007 18:37:52 -0000 Received: (qmail 9052 invoked by uid 48); 16 May 2007 18:37:25 -0000 Date: Wed, 16 May 2007 18:37:00 -0000 Subject: [Bug driver/31963] New: The configure option "--enable-stage1-checking" is undocumented (and incorrectly named) X-Bugzilla-Reason: CC Message-ID: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "rob1weld at aol dot com" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2007-05/txt/msg01228.txt.bz2 This bug report is listed for the HTB i686-pc-linux-gnu but actually affects ALL platforms. The reason I chose to put this under the "Component" choice "driver" is because there is no choice for "documentation" and it does involve renaming one of the compiler command line options. --- When I compile with "--enable-checking=?" the "checking" is performed on stages 2,3 and the libraries - it is NOT performed on stage 1. When I compile with "--enable-stage1-checking" the "checking" is performed on stage TWO only, and NOT on any other stages (or the libraries). To _actually_ check stage 1 you would need the Operating System's GCC to have been compiled using the checking options - otherwise stage 1 is never checked. Correct ? BUG 1): The configure option "--enable-stage1-checking" is named incorrectly. We need to change the configure script and make it a depreciated or obsoleted option and add an option that is instead called "--enable-stage2-checking" (does the same thing, just correct the name). BUG 2): The configure option "--enable-stage1-checking" (or "--enable-stage2-checking") is not documented. Using grep I find the word in these files: # grep -r stage1-checking gcc-4_2-branch/* gcc-4_2-branch/ChangeLog gcc-4_2-branch/autom4te.cache/output.0 gcc-4_2-branch/configure gcc-4_2-branch/configure.in The file "gccinstall.info" (and any .html DOCs) and the files that create them are the correct location to document this feature - directly under the notes for "--enable-checking". Suggestion 1): Use "--enable-stage2-checking" to enable a few more checks by default. The gccinstall.info file says this for the `--enable-checking' option: The full set of flags available are: "assert", "fold", "gc", "gcac" "misc", "rtl", "rtlflag", "runtime", "tree", and "valgrind". The "rtl", "gcac" and "valgrind" checks are very expensive. (NOTE: See below! "fold" is expensive - DOCs are wrong?) When building from SVN or snapshots we use "assert", "gc", "misc", "rtlflag", "runtime" and "tree". The release versions use only "assert" and "runtime". Thus, according to the DOCs (which do need updating), when we build the SVN we are not using: "fold", "gcac" "rtl", and "valgrind". I suggest that when building the SVN version we could use, (on all stages), the flags "--enable-checking=assert,misc,rtlflag,runtime,tree", and the additional flag (now called) "--enable-stage2-checking=fold,gc,rtl" for better, faster checking. Would we want to add "misc" and "rtlflag" to the release version checks ? The gcac (GC_ALWAYS_COLLECT) flag could probably be left off the list. The file, "gcc-4_2-branch\gcc\config.in" documents checking a little differently (and each type more thoroughly) than the file "gccinstall.info" does. ENABLE_ASSERT_CHECKING - "assert" /* Define if you want assertions enabled. This is a cheap check. */ ENABLE_CHECKING - "misc" /* Define if you want more run-time sanity checks. This one gets a grab bag of miscellaneous but relatively cheap checks. */ ENABLE_FOLD_CHECKING - "fold" /* Define if you want fold checked that it never destructs its argument. This is quite expensive. */ ENABLE_GC_ALWAYS_COLLECT - "gcac" /* Define if you want the garbage collector to operate in maximally paranoid mode, validating the entire heap and collecting garbage at every opportunity. This is extremely expensive. */ ENABLE_GC_CHECKING - "gc" /* Define if you want the garbage collector to do object poisoning and other memory allocation checks. This is quite expensive. */ ENABLE_RTL_CHECKING - "rtl" /* Define if you want all operations on RTL (the basic data structure of the optimizer and back end) to be checked for dynamic type safety at runtime. This is quite expensive. */ ENABLE_RTL_FLAG_CHECKING - "rtlflag" /* Define if you want RTL flag accesses to be checked against the RTL codes that are supported for each access macro. This is relatively cheap. */ ENABLE_RUNTIME_CHECKING - "runtime" /* Define if you want runtime assertions enabled. This is a cheap check. */ ENABLE_TREE_CHECKING - "tree" /* Define if you want all operations on trees (the basic data structure of the front ends) to be checked for dynamic type safety at runtime. This is moderately expensive. The tree browser debugging routines will also be enabled by this option. */ ENABLE_VALGRIND_CHECKING - "valgrind" /* Define if you want to run subprograms and generated programs through valgrind (a memory checker). This is extremely expensive. */ -- Summary: The configure option "--enable-stage1-checking" is undocumented (and incorrectly named) Product: gcc Version: 4.2.1 Status: UNCONFIRMED Severity: minor Priority: P3 Component: driver AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: rob1weld at aol dot com GCC build triplet: i686-pc-linux-gnu GCC host triplet: i686-pc-linux-gnu GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31963