forked from OSchip/llvm-project
48 lines
955 B
ArmAsm
48 lines
955 B
ArmAsm
|
# REQUIRES: x86
|
||
|
## basic-block-sections tests.
|
||
|
## This simple test checks foo is folded into bar with bb sections
|
||
|
## and the jumps are deleted.
|
||
|
|
||
|
# RUN: llvm-mc -filetype=obj -triple=x86_64 %s -o %t.o
|
||
|
# RUN: ld.lld --optimize-bb-jumps --icf=all %t.o -o %t.out
|
||
|
# RUN: llvm-objdump -d %t.out| FileCheck %s
|
||
|
|
||
|
# CHECK: <foo>:
|
||
|
# CHECK-NEXT: nopl (%rax)
|
||
|
# CHECK-NEXT: je 0x{{[[:xdigit:]]+}} <aa.BB.foo>
|
||
|
# CHECK-NOT: jmp
|
||
|
|
||
|
# CHECK: <a.BB.foo>:
|
||
|
## Explicity check that bar is folded and not emitted.
|
||
|
# CHECK-NOT: <bar>:
|
||
|
# CHECK-NOT: <a.BB.bar>:
|
||
|
# CHECK-NOT: <aa.BB.bar>:
|
||
|
|
||
|
.section .text.bar,"ax",@progbits
|
||
|
.type bar,@function
|
||
|
bar:
|
||
|
nopl (%rax)
|
||
|
jne a.BB.bar
|
||
|
jmp aa.BB.bar
|
||
|
|
||
|
.section .text.a.BB.bar,"ax",@progbits,unique,3
|
||
|
a.BB.bar:
|
||
|
nopl (%rax)
|
||
|
|
||
|
aa.BB.bar:
|
||
|
ret
|
||
|
|
||
|
.section .text.foo,"ax",@progbits
|
||
|
.type foo,@function
|
||
|
foo:
|
||
|
nopl (%rax)
|
||
|
jne a.BB.foo
|
||
|
jmp aa.BB.foo
|
||
|
|
||
|
.section .text.a.BB.foo,"ax",@progbits,unique,2
|
||
|
a.BB.foo:
|
||
|
nopl (%rax)
|
||
|
|
||
|
aa.BB.foo:
|
||
|
ret
|