Only if optimisation passes removes the promise the compiler gives to the user. I'll have to check whether or not the proposed implementation in gdc is even viable vs. having a 'C volatile' type.
How could it not be? It's just *(volatile T*)ptr = value; - which gcc ir can obviously express.