fix asmstreaming of 2/4 byte elements with pow-2 alignments.
authorChris Lattner <sabre@nondot.org>
Wed, 19 Aug 2009 06:35:36 +0000 (06:35 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 19 Aug 2009 06:35:36 +0000 (06:35 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@79408 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCAsmStreamer.cpp
test/MC/AsmParser/directive_align.s

index 8068c666671dd92096b5e4185ceb0196bece6505..3dfd8e947484cd0ce55187eb10d0018e4828625a 100644 (file)
@@ -229,7 +229,14 @@ void MCAsmStreamer::EmitValueToAlignment(unsigned ByteAlignment, int64_t Value,
   // Some assemblers don't support non-power of two alignments, so we always
   // emit alignments as a power of two if possible.
   if (isPowerOf2_32(ByteAlignment)) {
-    OS << TAI.getAlignDirective();
+    switch (ValueSize) {
+    default: llvm_unreachable("Invalid size for machine code value!");
+    case 1: OS << TAI.getAlignDirective(); break;
+    // FIXME: use TAI for this!
+    case 2: OS << ".p2alignw "; break;
+    case 4: OS << ".p2alignl "; break;
+    case 8: llvm_unreachable("Unsupported alignment size!");
+    }
     
     if (TAI.getAlignmentIsInBytes())
       OS << ByteAlignment;
index c60be19e452b7ff2ce7b086d1fe57172f7a65f3a..b381f1e78864ce41d4641d2b0594fbacefcc7b93 100644 (file)
@@ -1,7 +1,7 @@
-# RUN: llvm-mc -triple i386-unknown-unknown %s | FileCheck %s
+# RUN: llvm-mc -triple i386-apple-darwin9 %s | FileCheck %s
 
 # CHECK: TEST0:
-# CHECK: .p2align 1, 0
+# CHECK: align 1
 TEST0:  
         .align 1