String merging is one of the most time-consuming functions in lld. This patch parallelize it to speed it up. On my 2-socket 20-core 40-threads Xeon E5-2680 @ 2.8 GHz machine, this patch shorten the clang debug build link time from 7.11s to 5.16s. It's a 27% improvement and actually pretty noticeable. In this test condition, lld is now 4x faster than gold. Differential Revision: https://reviews.llvm.org/D38266 llvm-svn: 314588
74 lines
1.7 KiB
ArmAsm
74 lines
1.7 KiB
ArmAsm
// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
|
|
// RUN: ld.lld %t.o -o %t --gc-sections
|
|
// RUN: llvm-readobj -symbols %t | FileCheck %s
|
|
|
|
// CHECK: Symbols [
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: (0)
|
|
// CHECK-NEXT: Value: 0x0
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
// CHECK-NEXT: Type: None (0x0)
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: Undefined (0x0)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: s3
|
|
// CHECK-NEXT: Value: 0x200120
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
// CHECK-NEXT: Type: Object (0x1)
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .rodata (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: s1
|
|
// CHECK-NEXT: Value: 0x200125
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Local (0x0)
|
|
// CHECK-NEXT: Type: Object (0x1)
|
|
// CHECK-NEXT: Other [ (0x2)
|
|
// CHECK-NEXT: STV_HIDDEN (0x2)
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Section: .rodata (0x1)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: Symbol {
|
|
// CHECK-NEXT: Name: _start
|
|
// CHECK-NEXT: Value: 0x201000
|
|
// CHECK-NEXT: Size: 0
|
|
// CHECK-NEXT: Binding: Global (0x1)
|
|
// CHECK-NEXT: Type: Function (0x2)
|
|
// CHECK-NEXT: Other: 0
|
|
// CHECK-NEXT: Section: .text (0x2)
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: ]
|
|
|
|
.text
|
|
.globl _start
|
|
.type _start,@function
|
|
_start:
|
|
movl $s1, %eax
|
|
movl $s3, %eax
|
|
|
|
.hidden s1
|
|
.type s1,@object
|
|
.section .rodata.str1.1,"aMS",@progbits,1
|
|
.globl s1
|
|
s1:
|
|
.asciz "abcd"
|
|
|
|
.hidden s2
|
|
.type s2,@object
|
|
.globl s2
|
|
s2:
|
|
.asciz "efgh"
|
|
|
|
.type s3,@object
|
|
s3:
|
|
.asciz "ijkl"
|
|
|
|
.type s4,@object
|
|
.globl s4
|
|
s4:
|
|
.asciz "mnop"
|