diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2013-02-16 15:00:16 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2013-02-16 15:00:16 +0000 |
commit | 64bf78046ea4f65b9f7a9c8bb23e94d7ff5829cc (patch) | |
tree | b96f3d811d1d997d933b17269493907ab9badfc1 /llvm/lib/MC/MCParser/AsmParser.cpp | |
parent | d784d9607437ebfbff3ac28f224acf8c1130712b (diff) | |
download | bcm5719-llvm-64bf78046ea4f65b9f7a9c8bb23e94d7ff5829cc.tar.gz bcm5719-llvm-64bf78046ea4f65b9f7a9c8bb23e94d7ff5829cc.zip |
MCParser: Reject .balign with non-pow2 alignments.
GNU as rejects them and there are configure scripts in the wild that check if
the assembler rejects ".align 3" to determine whether the alignment is in bytes
or powers of two.
llvm-svn: 175360
Diffstat (limited to 'llvm/lib/MC/MCParser/AsmParser.cpp')
-rw-r--r-- | llvm/lib/MC/MCParser/AsmParser.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp index b7953c1a597..9c998ff796c 100644 --- a/llvm/lib/MC/MCParser/AsmParser.cpp +++ b/llvm/lib/MC/MCParser/AsmParser.cpp @@ -2456,6 +2456,10 @@ bool AsmParser::ParseDirectiveAlign(bool IsPow2, unsigned ValueSize) { } Alignment = 1ULL << Alignment; + } else { + // Reject alignments that aren't a power of two, for gas compatibility. + if (!isPowerOf2_64(Alignment)) + Error(AlignmentLoc, "alignment must be a power of 2"); } // Diagnose non-sensical max bytes to align. |