www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Re: struct field alignment

Walter Bright:

 I'm painfully aware that align(8)/(16) don't work on the 32 bit targets. I've 
 been reluctant to fix that because it involves some performance degradation 
 (keeping the stack so aligned requires the insertion of stack adjustment 
 instructions here and there).

On the other hand stack-allocated structs and arrays that need to be 16-byte aligned may speed up the code if used with certain SSE+ instructions. If it is something that must be used for the whole program then you may add a compiler switch to activate stack alignment on request. If it may work for a single compilation unit then use something like: align(16) module foobar; If it may work for a single function, then then you may add the alignment for functions: align(16) int foo(int x) {... Bye, bearophile
Oct 18 2010