mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-13 05:40:59 +00:00
[BOLT][TEST] Import small tests
Summary: Imported small internal tests: - fallthrough-to-noop.test (cherry picked from FBD32158100)
This commit is contained in:
parent
d1df113e30
commit
2e0ad6ffe4
60
bolt/test/X86/Inputs/ft_to_noop.s
Normal file
60
bolt/test/X86/Inputs/ft_to_noop.s
Normal file
@ -0,0 +1,60 @@
|
||||
.file "ft_to_noop.s"
|
||||
.text
|
||||
|
||||
.globl foo
|
||||
.type foo, @function
|
||||
foo:
|
||||
LFB0:
|
||||
# FDATA: 0 [unknown] 0 1 foo 0 0 20
|
||||
.cfi_startproc
|
||||
pushq %rbp
|
||||
.cfi_def_cfa_offset 16
|
||||
.cfi_offset 6, -16
|
||||
movq %rsp, %rbp
|
||||
.cfi_def_cfa_register 6
|
||||
movl %edi, -20(%rbp)
|
||||
movl $0, -4(%rbp)
|
||||
cmpl $10, -20(%rbp)
|
||||
LBB00_br:
|
||||
jle L2
|
||||
nop
|
||||
# FDATA: 1 foo #LBB00_br# 1 foo #L2# 0 18
|
||||
# FDATA: 1 foo #LBB00_br# 1 foo #LFT0# 0 3
|
||||
|
||||
LFT0:
|
||||
movl -20(%rbp), %eax
|
||||
addl $1, %eax
|
||||
movl %eax, -4(%rbp)
|
||||
L2:
|
||||
addl $1, -4(%rbp)
|
||||
movl -4(%rbp), %eax
|
||||
popq %rbp
|
||||
.cfi_def_cfa 7, 8
|
||||
ret
|
||||
.cfi_endproc
|
||||
LFE0:
|
||||
.size foo, .-foo
|
||||
|
||||
.globl main
|
||||
.type main, @function
|
||||
main:
|
||||
LFB1:
|
||||
.cfi_startproc
|
||||
pushq %rbp
|
||||
.cfi_def_cfa_offset 16
|
||||
.cfi_offset 6, -16
|
||||
movq %rsp, %rbp
|
||||
.cfi_def_cfa_register 6
|
||||
subq $16, %rsp
|
||||
movl %edi, -4(%rbp)
|
||||
movq %rsi, -16(%rbp)
|
||||
movl -4(%rbp), %eax
|
||||
movl %eax, %edi
|
||||
call foo
|
||||
movl $0, %eax
|
||||
leave
|
||||
.cfi_def_cfa 7, 8
|
||||
ret
|
||||
.cfi_endproc
|
||||
LFE1:
|
||||
.size main, .-main
|
30
bolt/test/X86/fallthrough-to-noop.test
Normal file
30
bolt/test/X86/fallthrough-to-noop.test
Normal file
@ -0,0 +1,30 @@
|
||||
# Check that profile data for the fall-through jump is not ingored when there is
|
||||
# a conditional jump followed by a no-op.
|
||||
|
||||
RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown \
|
||||
RUN: %S/Inputs/ft_to_noop.s -o %t.o
|
||||
RUN: link_fdata %S/Inputs/ft_to_noop.s %t.o %t.fdata
|
||||
RUN: llvm-strip --strip-unneeded %t.o
|
||||
RUN: %clang %t.o -o %t.exe -Wl,-q
|
||||
RUN: llvm-bolt %t.exe -o %t -data %t.fdata \
|
||||
RUN: -print-cfg -sequential-disassembly 2>&1 | FileCheck %s
|
||||
|
||||
CHECK: Binary Function "foo" after building cfg
|
||||
CHECK: Exec Count : 20
|
||||
CHECK: Profile Acc : 100.0%
|
||||
|
||||
# This block is terminated with a conditional jump to .Ltmp0 followed by a
|
||||
# no-op. The profile data contains a count for the fall-through (3) which
|
||||
# is different from what would be inferred (2). However the destination
|
||||
# offset of this fall-through jump in the profile data points to the no-op
|
||||
# following the jump and not the start of the fall-through block .LFT0.
|
||||
CHECK: Entry Point
|
||||
CHECK-NEXT: Exec Count : 20
|
||||
CHECK: Successors: .Ltmp[[#BB1:]] (mispreds: 0, count: 18), .LFT[[#BB2:]] (mispreds: 0, count: 3)
|
||||
|
||||
CHECK: .LFT[[#BB2]]
|
||||
CHECK-NEXT: Exec Count : 3
|
||||
CHECK: Successors: .Ltmp[[#]] (mispreds: 0, count: 0)
|
||||
|
||||
CHECK: .Ltmp[[#BB1]]
|
||||
CHECK-NEXT: Exec Count : 18
|
Loading…
x
Reference in New Issue
Block a user