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