This is the mail archive of the
mailing list for the GCC project.
Re: Really, really const
Op vr 26-09-2003, om 09:59 schreef Andrew Haley:
> > | The memory a is read twice. Is there any attrribute I can use to
> > | stop gcc from doing this?
> > GCC should be able to get that right without resorting to attributte
> > hackery.
> I think the C standard says that gcc has to read the memory twice.
> Just because that memory is declared const here that doesn't mean that
> it is const everywhere else; it just means that it's read-only here.
> It might change.
If you are right, then GCC is buggy. If a might change, then that
would have to happen in the call to f(), so in a modified version of
extern const int a;
extern void f();
int foo ()
int t = a;
int n = t;
n += t;
the assignment to t should happen before the call to f(). But GCC 3.2.2
subl $12, %esp
movl a, %eax
sall $1, %eax
addl $12, %esp
.ident "GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)"
In other words we assume that a has not changed after the call.