int* Register = 0x00FF0000; // Address of micro-seconds timer
while(*Register != 0);
Should I declare *Register as volatile while using armcc compiler and -O0 optimization ?
In other words: Does -O0 optimization requires qualifying that sort of variables as volatile ? (which is probably required in -O2 optimization)
It seems to me that you should declare
Registerasvolatileregardless, since it is volatile. There’s no harm in marking itvolatile, since you’re depending on the compiler not optimizing away the accesses through the pointer.You shouldn’t depend on the compiler optimization settings to hope this gets compiled correctly. I’d guess that forgetting to mark things
volatileappropriately is a major reason that cranking up optimizations on embedded C code often causes things to start breaking.