diff options
author | Eric Christopher <echristo@apple.com> | 2012-03-01 22:50:31 +0000 |
---|---|---|
committer | Eric Christopher <echristo@apple.com> | 2012-03-01 22:50:31 +0000 |
commit | 66b0721014db31b1d821e5c3d72d8d270f00945f (patch) | |
tree | ad06622a4aeafaf7a0a9009a93c9240564bdfc77 | |
parent | 5bc1f47b00421c754d3b4d825419087b0e29fde5 (diff) | |
download | bcm5719-llvm-66b0721014db31b1d821e5c3d72d8d270f00945f.tar.gz bcm5719-llvm-66b0721014db31b1d821e5c3d72d8d270f00945f.zip |
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
llvm-svn: 151852
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp | 6 | ||||
-rw-r--r-- | llvm/test/DebugInfo/X86/stringpool.ll | 16 |
2 files changed, 11 insertions, 11 deletions
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp index 58e40e17c52..9f1aed48902 100644 --- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -804,6 +804,9 @@ void DwarfDebug::endModule() { // Compute DIE offsets and sizes. computeSizeAndOffsets(); + // Emit info into a debug str section. + emitDebugStr(); + // Emit all the DIEs into a debug info section emitDebugInfo(); @@ -836,9 +839,6 @@ void DwarfDebug::endModule() { // Emit inline info. emitDebugInlineInfo(); - // Emit info into a debug str section. - emitDebugStr(); - // clean up. DeleteContainerSeconds(DeadFnScopeMap); SPMap.clear(); diff --git a/llvm/test/DebugInfo/X86/stringpool.ll b/llvm/test/DebugInfo/X86/stringpool.ll index 2cd100156aa..89266a5d8f9 100644 --- a/llvm/test/DebugInfo/X86/stringpool.ll +++ b/llvm/test/DebugInfo/X86/stringpool.ll @@ -14,6 +14,14 @@ !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 ] +; 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. ; LINUX: .long .Lstring3 # DW_AT_name ; LINUX-NEXT: .long 39 # DW_AT_type @@ -34,11 +42,3 @@ ; DARWIN-NEXT: .byte 9 ## DW_AT_location ; DARWIN-NEXT: .byte 3 ; 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 |