On Fri, Aug 11, 2017 at 1:14 PM, Jonathan Wakely <jwakely.gcc@xxxxxxxxx> wrote: > 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. Wow! That makes perfect sense. Thank you so much! I will give it a try and let you know what I find. Thanks for the quick response! Will