http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54553

             Bug #: 54553
           Summary: atribute optimize on function affects optimization for
                    other functions
    Classification: Unclassified
           Product: gcc
           Version: 4.7.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: ste...@gmail.com


Created attachment 28175
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28175
tar.gz of files described in the case including sources

We tried to use __attribute__((optimize(0))) on specific function for debug
purposes while compiling code with -O2 and we encountered a strange behaviour.
The function with attribute was not optimised, as expected but in addition all
other functions in the c file that includes h file with that attribute were not
optimised. My guess is that when compiler meets __attribute__ optimize - it
just treats it as if it was #pragma thus not restoring the previous
optimization state.
Where are several files attached:
1) test1.i
 file with no __attribute__((optimize(0)))
2) test2.i
 file with __attribute__((optimize(0)))
3) test1.s
 assembly produced by test1 (f1, f2 and f3 are inlined)
4) test2.s
 assembly produced by test1 (none of the functions are inlined)
5) complier.out
 compiler output produced by 
x86_64-apple-darwin12-gcc-4.7.1 -v test2.c -o test2 -O2 --save

P.S.: This dow not seems to be architecture dependent as we had a similar
problem with mips cross-compiler on windows platform.

Reply via email to