Re: Finding the optimization that is making the change

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11 August 2017 at 18:09, Will Hawkins <whh8b@xxxxxxxxxxxx> wrote:
> Hello everyone!
>
> First, thank you all for your participation in the gcc community -- I
> firmly believe that one of the great strengths of free software is the
> community of people that participate in its development, maintenance
> and support. So, thank you!
>
> I have a simple C program and I am attempting to determine which of
> the optimizations at O1 cause a particular transformation. In order to
> isolate the optimizations enabled at O1 vs O0, I followed an idea set
> out in the gcc man page and ran the following command:
>
> $ diff <(gcc -Q -O1 --help=optimizers) <(gcc -Q --help=optimizers) |
> grep enabled | awk '{print $2;}' > optimizations
>
> Then I compiled with the following command:
>
> gcc -o scfi.poptim `cat optimizations | tr '\n' ' '` scfi.c
>
> I compared simple.poptim with simple.optim that came from running this command:
>
> gcc -o simple.optim -O1 simple.c
>
> I expected that simple.optim and simple.poptim would be (largely)
> identical. That is not the case, however. It does not look like the
> scfi.poptim program has been optimized at all.

Because you didn't specify any -O optimization option, which means
there is no optimization done at all. See
https://gcc.gnu.org/wiki/FAQ#optimization-options

Options to enable/disable individual optimizations have no effect if
the optimizers aren't run at all.

> I was wondering if anyone could shed some light on why this is not the
> case. I ask only because the gcc man page seems to imply that this is
> the "right" way to isolate the different optimizations performed at
> different levels.

No, you need to use -O1 -fno-xxx -fno-yyy -fno-zzz

i.e. turn on optimization, then disable individual passes. You can't
start from nothing and enable individual ones, that gives you nothing.



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux