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

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

 



On 03/12/2020 11:47, Andrea Corallo via Gcc-help wrote:
> Hi all,
> 
> I've a piece of code that reduced looks like this:
> 
> #+begin_src C
> typedef struct {
>   void (*fun_ptr)(void);
> } x_t;
> 
> x_t *x;
> 
> void
> f (void)
> {
>   const x_t const *y = x;
>   for (int i = 0; i < 1000; ++i)
>     y->fun_ptr ();
> }
> #+end_src
> 
> What is the correct way (if any) to express to the compiler that the
> value of y->fun_ptr does not get clobbered by the function call itself
> so the corresponding load to obtain its value can be moved out of the
> loop?
> 
> My understanding is that the const qualifier is more for diagnostic
> reasons and is not sufficient for GCC to make this assumption.  OTOH I
> cannot give 'fun_ptr' the attribute pure as it's not.
> 
> Thanks
> 
>   Andrea
> 

Why not just put the function pointer in a local variable?  Then the
compiler will know that the value can't change.

R.





[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