# REQUIRES: aarch64 # RUN: rm -rf %t && split-file %s %t # RUN: llvm-mc -filetype=obj -triple=arm64-apple-darwin %t/a.s -o %t/a.o # RUN: llvm-profdata merge %t/a.proftext -o %t/a.profdata # RUN: %no-fatal-warnings-lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --irpgo-profile-sort=%t/a.profdata --verbose-bp-section-orderer 2>&1 | FileCheck %s --check-prefix=STARTUP # RUN: %no-fatal-warnings-lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --irpgo-profile-sort=%t/a.profdata --verbose-bp-section-orderer --icf=all --compression-sort=none 2>&1 | FileCheck %s --check-prefix=STARTUP-ICF # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --irpgo-profile %t/a.profdata --bp-startup-sort=function --verbose-bp-section-orderer 2>&1 | FileCheck %s --check-prefix=STARTUP # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --irpgo-profile=%t/a.profdata --bp-startup-sort=function --verbose-bp-section-orderer --icf=all --bp-compression-sort=none 2>&1 | FileCheck %s --check-prefix=STARTUP-ICF # STARTUP: Ordered 5 sections ([[#]] bytes) using balanced partitioning # STARTUP-ICF: Ordered 4 sections ([[#]] bytes) using balanced partitioning # Check that orderfiles take precedence over BP # RUN: %no-fatal-warnings-lld -arch arm64 -lSystem -e _main -o - %t/a.o -order_file %t/a.orderfile --irpgo-profile-sort=%t/a.profdata | llvm-nm --numeric-sort --format=just-symbols - | FileCheck %s --check-prefix=ORDERFILE # RUN: %lld -arch arm64 -lSystem -e _main -o - %t/a.o -order_file %t/a.orderfile --compression-sort=both | llvm-nm --numeric-sort --format=just-symbols - | FileCheck %s --check-prefix=ORDERFILE # RUN: %lld -arch arm64 -lSystem -e _main -o - %t/a.o -order_file %t/a.orderfile --irpgo-profile=%t/a.profdata --bp-startup-sort=function | llvm-nm --numeric-sort --format=just-symbols - | FileCheck %s --check-prefix=ORDERFILE # RUN: %lld -arch arm64 -lSystem -e _main -o - %t/a.o -order_file %t/a.orderfile --bp-compression-sort=both | llvm-nm --numeric-sort --format=just-symbols - | FileCheck %s --check-prefix=ORDERFILE # Functions # ORDERFILE: A # ORDERFILE: F # ORDERFILE: E # ORDERFILE: D # ORDERFILE-DAG: _main # ORDERFILE-DAG: _B # ORDERFILE-DAG: l_C # ORDERFILE-DAG: merged1.Tgm # ORDERFILE-DAG: merged2.Tgm # Data # ORDERFILE: s3 # ORDERFILE: r3 # ORDERFILE: r2 # ORDERFILE-DAG: s1 # ORDERFILE-DAG: s2 # ORDERFILE-DAG: r1 # ORDERFILE-DAG: r4 # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --verbose-bp-section-orderer --compression-sort=function 2>&1 | FileCheck %s --check-prefix=COMPRESSION-FUNC # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --verbose-bp-section-orderer --compression-sort=data 2>&1 | FileCheck %s --check-prefix=COMPRESSION-DATA # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --verbose-bp-section-orderer --compression-sort=both 2>&1 | FileCheck %s --check-prefix=COMPRESSION-BOTH # RUN: %no-fatal-warnings-lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --verbose-bp-section-orderer --compression-sort=both --irpgo-profile-sort=%t/a.profdata 2>&1 | FileCheck %s --check-prefix=COMPRESSION-BOTH # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --verbose-bp-section-orderer --bp-compression-sort=function 2>&1 | FileCheck %s --check-prefix=COMPRESSION-FUNC # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --verbose-bp-section-orderer --bp-compression-sort=function --icf=all 2>&1 | FileCheck %s --check-prefix=COMPRESSION-ICF-FUNC # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --verbose-bp-section-orderer --bp-compression-sort=data 2>&1 | FileCheck %s --check-prefix=COMPRESSION-DATA # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --verbose-bp-section-orderer --bp-compression-sort=both 2>&1 | FileCheck %s --check-prefix=COMPRESSION-BOTH # RUN: %lld -arch arm64 -lSystem -e _main -o %t/a.out %t/a.o --verbose-bp-section-orderer --bp-compression-sort=both --irpgo-profile=%t/a.profdata --bp-startup-sort=function 2>&1 | FileCheck %s --check-prefix=COMPRESSION-BOTH # COMPRESSION-FUNC: Ordered 9 sections ([[#]] bytes) using balanced partitioning # COMPRESSION-ICF-FUNC: Ordered 7 sections ([[#]] bytes) using balanced partitioning # COMPRESSION-DATA: Ordered 7 sections ([[#]] bytes) using balanced partitioning # COMPRESSION-BOTH: Ordered 16 sections ([[#]] bytes) using balanced partitioning #--- a.s .text .globl _main, A, _B, l_C.__uniq.111111111111111111111111111111111111111.llvm.2222222222222222222 _main: ret A: ret _B: add w0, w0, #1 bl A ret l_C.__uniq.111111111111111111111111111111111111111.llvm.2222222222222222222: add w0, w0, #2 bl A ret D: add w0, w0, #2 bl _B ret E: add w0, w0, #2 bl l_C.__uniq.111111111111111111111111111111111111111.llvm.2222222222222222222 ret F: add w0, w0, #3 bl l_C.__uniq.111111111111111111111111111111111111111.llvm.2222222222222222222 ret merged1.Tgm: add w0, w0, #101 ret merged2.Tgm: add w0, w0, #101 ret .data s1: .ascii "hello world" s2: .ascii "i am a string" s3: .ascii "this is s3" r1: .quad s1 r2: .quad r1 r3: .quad r2 r4: .quad s2 # cstrings are ignored by runBalancedPartitioning() .cstring cstr: .asciz "this is cstr" .bss bss0: .zero 10 .subsections_via_symbols #--- a.proftext :ir :temporal_prof_traces # Num Traces 1 # Trace Stream Size: 1 # Weight 1 A, B, C.__uniq.555555555555555555555555555555555555555.llvm.6666666666666666666, merged1, merged2 A # Func Hash: 1111 # Num Counters: 1 # Counter Values: 1 B # Func Hash: 2222 # Num Counters: 1 # Counter Values: 1 C.__uniq.555555555555555555555555555555555555555.llvm.6666666666666666666 # Func Hash: 3333 # Num Counters: 1 # Counter Values: 1 D # Func Hash: 4444 # Num Counters: 1 # Counter Values: 1 merged1 # Func Hash: 5555 # Num Counters: 1 # Counter Values: 1 merged2 # Func Hash: 6666 # Num Counters: 1 # Counter Values: 1 #--- a.orderfile A F E D s3 r3 r2