This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: Add --print-optimizers option


Hi Mark,

  This is a resubmission of an old patch that was originally submitted
  when the mainline was in stage 3.  It adds a new command line switch
  to gcc called "--print-optimizers".

What is the intended usage of this option? I'm in no way trying to be
facetious; I'm just curious.

The intended use (from my point of view) is to enable a script to automatically discover which optimization switches are supported by gcc so that it can then iterate over these switches looking for the combination that provides the best overall optimization for a given program. The algorithm looks something like this:


1. Find out which optimization options are supported by the gcc.

2. Choose a subset of these options.

3. Compile the user's application with these options.

  4. Profile the compiled application and record some kind judgement
     about how well it has performed.

  5.  Go back to step 2 and repeat, choosing a new subset of the
      available optimization options.  Continue until you have run out
      of subsets or time.

We are actually using the Acovea program <http://www.coyotegulch.com/products/acovea/index.html>
to do much of this work for us. Step 1 can be done by hand, but this is inconvenient, inconsistent and error prone.


In the course of developing that patch I also realised that it would enable us to easily answer some of the questions we routinely receive from our customers - such as "which optimizations are enabled at -O2" or "what new optimizations have been introduced with gcc x.x.x ?" (I know that this information can be found out through other means, but if I can tell the customer "run this command and you can find out for yourself" they are much happier).


> Is this something that we could fold in with --help?


Well maybe. If --help gave a machine-parse-able iindication of the type of switch it was documenting (optimization/warning/...) then a separate --print-optimizers switch would not be needed. But that would complicate the output of --help, which might not be appreciated by other people.

> Does it make sense to distinguish "optimizers" from "warnings"?

Oh yes definitely. In the scenario outlined above the script is only interested in optimizations, nothing else.

> What about things like -fuse-cxa-atexit, which isn't really
> an optimization, but which it might also be nice to see an
> enabled/disabled flag for?

I am all for having some way of displaying that information. In fact my intention is that if the --print-optimizers patch is acceptable I would then go on to develop and submit an extended version which included --print-warnings and maybe --print-pre-processor-symbols(*). So adding something like --print-other-switches would not be a problem. (Suggestions for a better name for the switch much appreciated).

Cheers
  Nick

(*) I know that you can achieve almost the same thing with "-dD -E" but I never remember this combination.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]