optimization/6673: gcc-3.1 produces wrong assembly code
Nam SungHyun
namsh@wimo.co.kr
Thu May 16 22:24:00 GMT 2002
Richard Henderson wrote:
> On Fri, May 17, 2002 at 01:53:24PM +0900, Nam SungHyun wrote:
> > I saw the feed back message from the gnats web, but did not get a
> > mail. Did not know how I can reply for that feedback.
>
> The gnats bug form has an originator email address that
> it cc's all status changes on. Did you mistype it?
I typed namsh@kldp.org and it's valid. ???
> > the 'a' in my example source is a 'global variable'.
> > So, should the gcc treat it as a volatile by default?
>
> No.
>
> > There are so many multi-threaded program. I didn't see
> > any program which use volatile for the global variable.
>
> Nor does any C compiler produce "thread aware" code by default.
>
> You have to use cpu-specific thread synchronization primitives
> in order for that to work reliably. Such a primitive would as
> a side effect tell the compiler that data must be committed to
> memory, which would cause 'a' to be written.
>
> You did none of these.
You mean I should use '-fvolatile-global -fvolatile-static'?
Now I compiled the example source with:
ppc-eabi-gcc -O1 -fvolatile-global -fvolatile-static -S ex.c
The result is same. What's wrong?
Regards,
namsh
.file "ex.c"
.globl __eabi
.section ".text"
.align 2
.globl main
.type main,@function
main:
stwu 1,-8(1)
mflr 0
stw 0,12(1)
bl __eabi
.L2:
b .L2
.Lfe1:
.size main,.Lfe1-main
.comm a,4,4
.ident "GCC: (GNU) 3.1"
More information about the Gcc-bugs
mailing list