Да, компилятор может делать все, что захочет, при условии, что значение программы остается неизменным.Эти переменные могут быть оптимизированы вне существования, сохранены только в регистре, использованы повторно для других целей, переупорядочены для требований выравнивания.
(обратите внимание, что компилятор не может переупорядочивать переменные в структуре)