mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-26 10:29:36 +00:00
Linkers normally read all the relocations upfront to compute the references between sections. Putting them together is a bit more cache friendly. I benchmarked linking a Release+Asserts clang with gold on a vm. I tried all 4 combinations of --gc-sections/no --gc-section hot and cold cache. I cleared the cache with echo 3 > /proc/sys/vm/drop_caches and warmed it up by running the link once before timing the subsequent ones. With cold cache and --gc-sections the time goes from 1.86130781665 +- 0.01713126697463843 seconds to 1.82370735105 +- 0.014127522318814516 seconds With cold cache and no --gc-sections the time goes from 1.6087245435500002 +- 0.012999066825178644 seconds to 1.5687122041500001 +- 0.013145850126026619 seconds With hot cache and no --gc-sections the time goes from 0.926200939 ( +- 0.33% ) seconds to 0.907200079 ( +- 0.31% ) seconds With hot cache and gc sections the time goes from 1.183038049 ( +- 0.34% ) seconds to 1.147355862 ( +- 0.39% ) seconds git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235165 91177308-0d34-0410-b5e6-96231b3b80d8
30 lines
607 B
ArmAsm
30 lines
607 B
ArmAsm
// RUN: llvm-mc -filetype=obj -triple x86_64-pc-linux-gnu %s -o - | llvm-readobj -s -sd | FileCheck %s
|
|
|
|
.text
|
|
.globl hello
|
|
.type hello,@function
|
|
hello:
|
|
call world
|
|
ret
|
|
|
|
.section .text.world,"axG",@progbits,world,comdat
|
|
.type world,@function
|
|
world:
|
|
call doctor
|
|
ret
|
|
|
|
// CHECK: Name: .group
|
|
// CHECK-NOT: SectionData
|
|
// CHECK: SectionData
|
|
// CHECK-NEXT: 0000: 01000000 05000000 07000000
|
|
|
|
// CHECK: Index: 5
|
|
// CHECK-NEXT: Name: .text.world
|
|
// CHECK-NOT: Section {
|
|
// CHECK: SHF_GROUP
|
|
|
|
// CHECK: Index: 7
|
|
// CHECK-NEXT: Name: .rela.text.world
|
|
// CHECK-NOT: Section {
|
|
// CHECK: SHF_GROUP
|