$FreeBSD: tags/RELEASE_10_0_0/devel/llvm32/files/patch-svn-r175360 330777 2013-10-18 22:06:39Z brooks $
------------------------------------------------------------------------
r175360 | d0k | 2013-02-16 15:00:16 +0000 (Sat, 16 Feb 2013) | 5 lines

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.
------------------------------------------------------------------------
Index: lib/MC/MCParser/AsmParser.cpp
===================================================================
--- lib/MC/MCParser/AsmParser.cpp	(revision 175359)
+++ lib/MC/MCParser/AsmParser.cpp	(revision 175360)
@@ -2456,6 +2456,10 @@
     }
 
     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.
Index: test/MC/AsmParser/align_invalid.s
===================================================================
--- test/MC/AsmParser/align_invalid.s	(revision 0)
+++ test/MC/AsmParser/align_invalid.s	(revision 175360)
@@ -0,0 +1,10 @@
+# RUN: llvm-mc -triple i386-linux-gnu < %s 2>&1 | FileCheck %s -check-prefix=ELF
+# RUN: llvm-mc -triple i386-apple-darwin < %s 2>&1 | FileCheck %s -check-prefix=DARWIN
+
+.align 3
+# ELF: error: alignment must be a power of 2
+# DARWIN-NOT: error
+
+.align 32
+# ELF-NOT: error
+# DARWIN: error: invalid alignment value
