Using `const int' values to size stack arrays

Robert Dewar dewar@gnat.com
Wed Nov 17 13:39:00 GMT 2004


Daniel Towner wrote:

> Absolutely. My port of gcc generates code which initialises a memory 
> variable with the value 12, and then in the body of the code which 
> handles the variable length array, loads that value into a register, and 
> does all the appropriate arithmetic on it (some example code is shown 
> below). Can the code not be optimised at the instruction level, so that 
> it would recognise that the memory value will always be 12, so the load 
> from memory will always be 12, and hence  copy propogation could remove 
> large chunks of code?
> 
> The main requirement for such an optimisation seems to be whether the 
> optimiser can recognise that the load from memory will always be a 
> constant value. If the original symbol was declared as `const int', or 
> `static const int', and that int is written to memory, can its value 
> ever be different to 12? I think that it is allowed to change if the 
> variable was marked as volatile, but in the other cases I would have 
> thought it could have been optimised?

This is certainly a possible optimization, but a bit of a marginal one,
since it only comes into play with a GNU C extension that we know is
very little used.



More information about the Gcc mailing list