# 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