This is the mail archive of the gcc@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: GCC-3.4 reorders asm() with -O2


> GCC-3.4 orders asm() outside of functions differently depending on
> whether code is compiled -O1 or -O2.  This behavior has changed from 
> gcc-3.3.1.

See our changes page:
http://gcc.gnu.org/gcc-3.4/changes.html, specially the section about
unit-at-a-time...

Honza
> 
> Here's a small piece of C code (extracted from glibc):
> 
> initfini.c:
> asm ("\n/*@HEADER_ENDS*/");
> 
> asm ("\n/*@TESTS_BEGIN*/");
> void dummy (void) { }
> asm ("\n/*@TESTS_END*/");
> 
> asm ("\n/*@_init_PROLOG_BEGINS*/");
> 
> 
> When compiled with -O1, the output is 
> 
> 
> /*@HEADER_ENDS*/
> 
> /*@TESTS_BEGIN*/
> #NO_APP
> . . .
>         .type   dummy, @function
> dummy:
> . . .
> #APP
> 
> /*@TESTS_END*/
> 
> /*@_init_PROLOG_BEGINS*/
> 
> 
> With -O2 (or -O3), the output is 
> 
> #APP
> 
> /*@HEADER_ENDS*/
> 
> /*@TESTS_BEGIN*/
> 
> /*@TESTS_END*/
> 
> /*@_init_PROLOG_BEGINS*/
> #NO_APP
> . . .
>         .type   dummy, @function
> dummy:
> . . .
>         .end    dummy
> 
> So, this is different behavior between gcc-3.3.1 and gcc-3.4.  
> Is there any guarantee that asm() outside of a function will
> not be reordered with respect to functions?  
> Is there any way to suppress this reordering?
> 
> --
> Michael Eager     eager@mvista.com	408-328-8426	
> MontaVista Software, Inc. 1237 E. Arques Ave., Sunnyvale, CA  94085


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