Alignment of data (and instructions) is still fairly critical to high performance computing, according to the Intel optimization manuals.
I am aware we must align data ourselves to avoid false sharing (two threads accessing two variables within same cache line) because the compiler cannot possibly know our threading model.
However, does GCC perform any other alignments/what alignments does it not do/what alignments must we do ourselves for performance?