Emit arange padding with a single directive.
authorBenjamin Kramer <benny.kra@googlemail.com>
Tue, 7 Jan 2014 19:28:14 +0000 (19:28 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Tue, 7 Jan 2014 19:28:14 +0000 (19:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198700 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/DwarfDebug.cpp
test/DebugInfo/X86/dwarf-aranges.ll
test/DebugInfo/X86/multiple-aranges.ll

index f8058d24022afff2cb362b76c91e2f591880a38a..7205f00b36d7e9749cc6228b2cb6f91127947859 100644 (file)
@@ -2817,9 +2817,8 @@ void DwarfDebug::emitDebugARanges() {
     unsigned TupleSize = PtrSize * 2;
 
     // 7.20 in the Dwarf specs requires the table to be aligned to a tuple.
-    unsigned Padding = 0;
-    while (((sizeof(int32_t) + ContentSize + Padding) % TupleSize) != 0)
-      Padding++;
+    unsigned Padding =
+        OffsetToAlignment(sizeof(int32_t) + ContentSize, TupleSize);
 
     ContentSize += Padding;
     ContentSize += (List.size() + 1) * TupleSize;
@@ -2836,8 +2835,7 @@ void DwarfDebug::emitDebugARanges() {
     Asm->OutStreamer.AddComment("Segment Size (in bytes)");
     Asm->EmitInt8(0);
 
-    for (unsigned n = 0; n < Padding; n++)
-      Asm->EmitInt8(0xff);
+    Asm->OutStreamer.EmitFill(Padding, 0xff);
 
     for (unsigned n = 0; n < List.size(); n++) {
       const ArangeSpan &Span = List[n];
index 203afc71d830fd9c3a1df245c7af7f97a27b4c79..66976c625f666026e5dd0fdaaac84abcb6921ae4 100644 (file)
@@ -7,10 +7,7 @@
 ; CHECK-NEXT: .byte 8 # Address Size (in bytes)
 ; CHECK-NEXT: .byte 0 # Segment Size (in bytes)
 ; -- alignment --
-; CHECK-NEXT: .byte
-; CHECK-NEXT: .byte
-; CHECK-NEXT: .byte
-; CHECK-NEXT: .byte
+; CHECK-NEXT: .zero 4,255
 
 ; <common symbols> - it should have made one span for each symbol.
 ; CHECK-NEXT: .quad some_bss
index 4c205d8e1697ae17d35e0a310f46960d860456a2..29dce3ca6a1b47341fbbdfe80affa7eaa9dd3df5 100644 (file)
@@ -6,10 +6,7 @@
 ; CHECK-NEXT: .long   .L.debug_info_begin0    # Offset Into Debug Info Section
 ; CHECK-NEXT: .byte   8                       # Address Size (in bytes)
 ; CHECK-NEXT: .byte   0                       # Segment Size (in bytes)
-; CHECK-NEXT: .byte   255
-; CHECK-NEXT: .byte   255
-; CHECK-NEXT: .byte   255
-; CHECK-NEXT: .byte   255
+; CHECK-NEXT: .zero   4,255
 ; CHECK-NEXT: .quad   kittens
 ; CHECK-NEXT: .Lset0 = rainbows-kittens
 ; CHECK-NEXT: .quad   .Lset0
 ; CHECK-NEXT: .long   .L.debug_info_begin1    # Offset Into Debug Info Section
 ; CHECK-NEXT: .byte   8                       # Address Size (in bytes)
 ; CHECK-NEXT: .byte   0                       # Segment Size (in bytes)
-; CHECK-NEXT: .byte   255
-; CHECK-NEXT: .byte   255
-; CHECK-NEXT: .byte   255
-; CHECK-NEXT: .byte   255
+; CHECK-NEXT: .zero   4,255
 ; CHECK-NEXT: .quad   rainbows
 ; CHECK-NEXT: .Lset1 = .Ldebug_end0-rainbows
 ; CHECK-NEXT: .quad   .Lset1