Mercurial > hg > CbC > CbC_llvm
view lld/test/ELF/icf-preemptible.s @ 192:d7606dcf6fce
Added tag llvm10 for changeset 0572611fdcc8
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 14 Dec 2020 18:01:34 +0900 |
parents | 1d019706d866 |
children | 1f2b6ac9f198 |
line wrap: on
line source
# REQUIRES: x86 # RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o # RUN: ld.lld -pie %t.o --icf=all --print-icf-sections -o /dev/null | \ # RUN: FileCheck --check-prefixes=EXE %s # RUN: ld.lld -shared %t.o --icf=all --print-icf-sections -o /dev/null | \ # RUN: FileCheck --check-prefix=DSO %s --implicit-check-not=removing ## Definitions are non-preemptible in an executable. # EXE: selected section {{.*}}:(.text.h1) # EXE-NEXT: removing identical section {{.*}}:(.text.h2) # EXE-NEXT: removing identical section {{.*}}:(.text.h3) # EXE: selected section {{.*}}:(.text.f1) # EXE-NEXT: removing identical section {{.*}}:(.text.f2) # EXE-NEXT: selected section {{.*}}:(.text.g1) # EXE: removing identical section {{.*}}:(.text.g2) # EXE-NEXT: removing identical section {{.*}}:(.text.g3) ## Definitions are preemptible in a DSO. Only leaf functions can be folded. # DSO: selected section {{.*}}:(.text.f1) # DSO-NEXT: removing identical section {{.*}}:(.text.f2) # DSO-NEXT: selected section {{.*}}:(.text.g1) # DSO-NEXT: removing identical section {{.*}}:(.text.g3) .globl f1, f2, g1, g2, g3 .section .text.f1 f1: ret .section .text.f2 f2: ret ## In -shared mode, .text.g1 and .text.g2 cannot be folded because f1 and f2 are ## preemptible and may refer to different functions at runtime. .section .text.g1 g1: jmp f1@plt .section .text.g2 g2: jmp f2@plt .section .text.g3 g3: jmp f1@plt ## In -shared mode, the sections below cannot be folded because g1, g2 and g3 ## are preemptible and may refer to different functions at runtime. .section .text.h1 jmp g1@plt .section .text.h2 jmp g2@plt .section .text.h3 jmp g3@plt