38 lines
1 KiB
ArmAsm
38 lines
1 KiB
ArmAsm
|
|
# REQUIRES: x86
|
||
|
|
# RUN: rm -rf %t*
|
||
|
|
|
||
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %s -o %t.o
|
||
|
|
# RUN: %lld -lSystem --icf=all -o %t %t.o
|
||
|
|
# RUN: llvm-objdump --macho --section-headers %t | FileCheck %s --check-prefix=SECT
|
||
|
|
# RUN: llvm-objdump --macho --syms %t | FileCheck %s --check-prefix=SYMS
|
||
|
|
|
||
|
|
## Every body folds into one, so __text holds a single 6-byte body plus _main
|
||
|
|
## rather than the 3 MiB (0x30000d) the unfolded copies occupy.
|
||
|
|
# SECT: Idx Name Size
|
||
|
|
# SECT-NEXT: 0 __text 00000009
|
||
|
|
|
||
|
|
## The sentinels bracket the group, so checking that the first and last members
|
||
|
|
## of the class share an address covers the whole run of folds.
|
||
|
|
# SYMS-DAG: [[#%.16x,F:]] g F __TEXT,__text _f_first
|
||
|
|
# SYMS-DAG: [[#F]] g F __TEXT,__text _f_last
|
||
|
|
|
||
|
|
.subsections_via_symbols
|
||
|
|
.text
|
||
|
|
.p2align 2
|
||
|
|
|
||
|
|
.globl _f_first
|
||
|
|
_f_first:; movl $7, %eax; ret
|
||
|
|
|
||
|
|
## 64 Ki identical function landing in one equivalence class.
|
||
|
|
.rept 65536
|
||
|
|
.globl _f\+
|
||
|
|
_f\+:; movl $$7, %eax; ret
|
||
|
|
.endr
|
||
|
|
|
||
|
|
.globl _f_last
|
||
|
|
_f_last:; movl $7, %eax; ret
|
||
|
|
|
||
|
|
.globl _main
|
||
|
|
_main:
|
||
|
|
ret
|