(I don't know is it related to / a duplicate of PR12564.)
ld.bfd gives a warning: "/usr/bin/ld: Warning: alignment 4 of symbol `baz' in /tmp/ccEJaaP0.o is smaller than 16 in /tmp/ccs1dDrt.o"; ld.gold doesn't even warn.
I think the linker should choose the largest alignment, as it already does when merging multiple common symbols.
Created attachment 5303 [details]
Compile it with GCC 4.5 or later and `-O3 -march=pentium3' options.
Linker can change alignment of a common symbol. But
it can't change alignment of a definition.