Re: 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]

 



"Stefan Franke" <s.franke@xxxxxxxxxxxx> writes:

>> > -----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

Hi Stefan,

IIUC declaring a pointer to constant prevents the pointer to be used in
order to modify what is pointing to.

But in this case (the original example) it does not prevent the function
being called to modify that piece of memory (the one pointed by y).

Therefore I believe this is not a bug.

  Andrea




[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