The --enable-checking=valgrind does two things. First, it provides Valgrind annotations for internal GCC allocators so that Valgrind has a better idea about memory blocks which are not supposed to be accessed. Second, it actually invokes Valgrind on every compiler invocation. This makes the option very nice for e.g. ensuring that bootstrap and testsuite are Valgrind-clean. However if one wants to use Valgrind only to analyze a particular testcase, then the price of full Valgrind'ified bootstrap is prohibitive.
Thus I propose to separate the two. To avoid introducing another --enable-checking option, let's move the annotations to the "misc" checking and also enable "misc" too if "valgrind" is requested. Both these options are disabled for releases, so no performance loss there. There are two drawbacks I can think of. First, if one wants Valgrind annotations but does not have the required headers, then the compiler will be built without them - silently (currently --enable-checking=valgrind fails if headers are not found). Second, the compiler binary will be built slightly different if "misc" is enabled depending on the presence or absence of those headers. I believe these are minor enough. I have a prototype patch which I've been using on gc-improv (not committed there yet). What do you think? -- Laurynas