volatileint blackhole;
blackhole = 1;
constint X = blackhole;
constint Y = blackhole;
Compiler is forbidden to assume that X == 1 would be true. It’s also forbidden to assume that X == Y. const just means the address and/or the data at the address is read only. constvolatileint* const hwreg; -> “read only volatile value at read only address hwreg”. Compiler can assume the hwreg address won’t magically change, but can’t assume the value read from that address won’t.
volatile int blackhole; blackhole = 1; const int X = blackhole; const int Y = blackhole;
Compiler is forbidden to assume that
X == 1
would be true. It’s also forbidden to assume thatX == Y
.const
just means the address and/or the data at the address is read only.const volatile int* const hwreg;
-> “read only volatile value at read only address hwreg”. Compiler can assume thehwreg
address won’t magically change, but can’t assume the value read from that address won’t.