13 years ago, the following commit changed the way alignment was represented moving from Log2 of alignment to plain number of bytes.
https://github.com/llvm/llvm-project/commit/6a715dccdf596d39d2b480beac48385f1fa73219#diff-d6520fbf2b954c8679d0835ca53c6ae423b4354e5e517dcfb043446042249f98
This patch introduced a regression, relevant lines are the following:
Before : if (Pow2Alignment != 0) OS << ',' << Pow2Alignment;
After : if (ByteAlignment != 0) OS << ',' << Log2_32(ByteAlignment);
This impacted the emitCommonSymbol and emitZeroFill functions. Functions added later on like emitLocalCommonSymbol indeed output the alignment only when it is greater than one. e.g.,
https://github.com/llvm/llvm-project/blob/10d183b889daab4512d476c1645d24d4e8946e8c/llvm/lib/MC/MCAsmStreamer.cpp#L997
https://github.com/llvm/llvm-project/blob/10d183b889daab4512d476c1645d24d4e8946e8c/llvm/lib/MC/MCAsmStreamer.cpp#L1059
This patch makes the behavior uniform for all sections and outputs alignment only when greater than one.