I was thinking that since Delphi initialisation effectively means zeroing, why not sort local vars so that all initable vars are behind each other, and zero them all together?
If you want to zero out the whole block of memory, this might be a little more efficient. However, if only certain fields have to be initialized -- e.g., for EP strings, only the discriminant, arguably the length, but certainly not the (often large) array of chars -- you only do extra work this way.
Afaik all Delphi inited types are pointer types on assembly level. Except maybe variants, I don't know their internals that well atm.
But GPC having a different implementation on this level doesn't really matter. It is an optimization, not a requirement.