summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Christopher <echristo@apple.com>2012-03-01 22:50:31 +0000
committerEric Christopher <echristo@apple.com>2012-03-01 22:50:31 +0000
commit66b0721014db31b1d821e5c3d72d8d270f00945f (patch)
treead06622a4aeafaf7a0a9009a93c9240564bdfc77
parent5bc1f47b00421c754d3b4d825419087b0e29fde5 (diff)
downloadbcm5719-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.cpp6
-rw-r--r--llvm/test/DebugInfo/X86/stringpool.ll16
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
OpenPOWER on IntegriCloud