AW: Correct way to express to the compiler "this does not get clobbered"?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> > -----Ursprüngliche Nachricht-----
> > Von: Gcc-help <gcc-help-bounces@xxxxxxxxxxx> Im Auftrag von Segher
> > Boessenkool
> > Gesendet: Freitag, 4. Dezember 2020 19:33
> > An: Andrea Corallo <andrea.corallo@xxxxxxx>
> > Cc: stefan@xxxxxxxxx; gcc-help@xxxxxxxxxxx
> > Betreff: Re: Correct way to express to the compiler "this does not get
> > clobbered"?
> >
> > On Fri, Dec 04, 2020 at 07:16:45PM +0100, Andrea Corallo via Gcc-help
> wrote:
> > > Segher Boessenkool <segher@xxxxxxxxxxxxxxxxxxx> writes:
> > >
> > > > On Fri, Dec 04, 2020 at 10:52:17AM +0100, Andrea Corallo via
> Gcc-help
> > wrote:
> > > >> stefan@xxxxxxxxx writes:
> > > >> I might open a bug but my understanding is that const is
> > > >> generally not used for optimizations.  Am I wrong?
> > > >
> > > > extern const int x = 42;
> > > > int f(void) { return x; }
> > > >
> > > > The code generated for f does not load the value for x from memory:
> > > > it returns 42 always.
> >
> > > Are you suggesting we should treat this as a bug?
> >
> > Huh?  No, I am just saying that const *is* used for optimisation, with
> > a
> dumb
> > simple example.  Remove const from this code and you get different
> > generated machine code (that does load x from memory always).
> >
> > If you think you have found a missing optimisation, please make a
> > self- contained demonstrator for that, and a file a PR?
> >
> >
> > Segher

IMHO it's the cprop pass which should get enhanced.

Stefan






[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux