From 5f9cb7b569027b47461096242e482e18e0ea3355 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Tue, 7 Jan 2014 19:28:14 +0000 Subject: [PATCH] Emit arange padding with a single directive. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198700 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 8 +++----- test/DebugInfo/X86/dwarf-aranges.ll | 5 +---- test/DebugInfo/X86/multiple-aranges.ll | 10 ++-------- 3 files changed, 6 insertions(+), 17 deletions(-) diff --git a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index f8058d24022..7205f00b36d 100644 --- a/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -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]; diff --git a/test/DebugInfo/X86/dwarf-aranges.ll b/test/DebugInfo/X86/dwarf-aranges.ll index 203afc71d83..66976c625f6 100644 --- a/test/DebugInfo/X86/dwarf-aranges.ll +++ b/test/DebugInfo/X86/dwarf-aranges.ll @@ -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 ; - it should have made one span for each symbol. ; CHECK-NEXT: .quad some_bss diff --git a/test/DebugInfo/X86/multiple-aranges.ll b/test/DebugInfo/X86/multiple-aranges.ll index 4c205d8e169..29dce3ca6a1 100644 --- a/test/DebugInfo/X86/multiple-aranges.ll +++ b/test/DebugInfo/X86/multiple-aranges.ll @@ -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 @@ -22,10 +19,7 @@ ; 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 -- 2.34.1