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: Really, really const


Steven Bosscher writes:
 > Op vr 26-09-2003, om 09:59 schreef Andrew Haley:
 > >  > | The memory a[0] 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[0] might change, then that
 > would have to happen in the call to f(), so in a modified version of
 > your example:
 > 
 > extern const int a[];
 > extern void f();
 > 
 > int foo ()
 > {
 >   int t = a[0];
 >   int n = t;
 >   f();
 >   n += t;
 >   return n;
 > }
 > 
 > the assignment to t should happen before the call to f().  But GCC 3.2.2
 > produces this:

Mainline doesn't; it reads a first.  Okay, now I'm really confused.  I
thought I understood what was going on, but now I'm not sure.

Andrew.


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