summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCParser/AsmParser.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2013-02-16 15:00:16 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2013-02-16 15:00:16 +0000
commit64bf78046ea4f65b9f7a9c8bb23e94d7ff5829cc (patch)
treeb96f3d811d1d997d933b17269493907ab9badfc1 /llvm/lib/MC/MCParser/AsmParser.cpp
parentd784d9607437ebfbff3ac28f224acf8c1130712b (diff)
downloadbcm5719-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.cpp4
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.
OpenPOWER on IntegriCloud