In C, the register
storage qualifier is an hint to the implementation that such identifier should be accessed as fast as possible (e.g. stored in a CPU register).
§6.7.1 A declaration of an identifier for an object with storage-class specifier register suggests that access to the object be as fast as possible. The extent to which such suggestions are effective is implementation-defined.
and
§6.7.3 The intended use of the restrict qualifier (like the register storage class) is to promote optimization [...]
However, I've heard about implementations (specifically found in embedded systems) where register
has a stronger meaning: it is a command and the compiler shall place the qualified identifier in a register.
So, is an implementation allowed to follow that behavior and thus considered as standard-compliant? What would permit that?
I'm raising this question because I find that being obligated to place that object in a register is no longer suggestion, as mandated by the Standard; they conflict, in other words.