Reorder the sections being output to reduce the number of assembler

fixups that are being used to determine section offsets. Reduces
the total number of fixups by 50% for a non-trivial testcase.

Part of rdar://10413936

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151852 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Eric Christopher 2012-03-01 22:50:31 +00:00
parent e751c0069a
commit 12313a56ec
2 changed files with 11 additions and 11 deletions

View File

@ -804,6 +804,9 @@ void DwarfDebug::endModule() {
// Compute DIE offsets and sizes. // Compute DIE offsets and sizes.
computeSizeAndOffsets(); computeSizeAndOffsets();
// Emit info into a debug str section.
emitDebugStr();
// Emit all the DIEs into a debug info section // Emit all the DIEs into a debug info section
emitDebugInfo(); emitDebugInfo();
@ -836,9 +839,6 @@ void DwarfDebug::endModule() {
// Emit inline info. // Emit inline info.
emitDebugInlineInfo(); emitDebugInlineInfo();
// Emit info into a debug str section.
emitDebugStr();
// clean up. // clean up.
DeleteContainerSeconds(DeadFnScopeMap); DeleteContainerSeconds(DeadFnScopeMap);
SPMap.clear(); SPMap.clear();

View File

@ -14,6 +14,14 @@
!6 = metadata !{i32 720937, metadata !"z.c", metadata !"/home/nicholas", null} ; [ DW_TAG_file_type ] !6 = metadata !{i32 720937, metadata !"z.c", metadata !"/home/nicholas", null} ; [ DW_TAG_file_type ]
!7 = metadata !{i32 720932, null, metadata !"int", null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] !7 = metadata !{i32 720932, null, metadata !"int", null, i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]
; Verify that "yyyy" ended up in the stringpool.
; LINUX: .section .debug_str,"MS",@progbits,1
; LINUX: yyyy
; LINUX: .section .debug_info
; DARWIN: .section __DWARF,__debug_str,regular,debug
; DARWIN: yyyy
; DARWIN: .section __DWARF,__debug_info
; Verify that we refer to 'yyyy' with a relocation. ; Verify that we refer to 'yyyy' with a relocation.
; LINUX: .long .Lstring3 # DW_AT_name ; LINUX: .long .Lstring3 # DW_AT_name
; LINUX-NEXT: .long 39 # DW_AT_type ; LINUX-NEXT: .long 39 # DW_AT_type
@ -34,11 +42,3 @@
; DARWIN-NEXT: .byte 9 ## DW_AT_location ; DARWIN-NEXT: .byte 9 ## DW_AT_location
; DARWIN-NEXT: .byte 3 ; DARWIN-NEXT: .byte 3
; DARWIN-NEXT: .quad _yyyy ; DARWIN-NEXT: .quad _yyyy
; Verify that "yyyy" ended up in the stringpool.
; LINUX: .section .debug_str,"MS",@progbits,1
; LINUX-NOT: .section
; LINUX: yyyy
; DARWIN: .section __DWARF,__debug_str,regular,debug
; DARWIN-NOT: .section
; DARWIN: yyyy