forked from llvm/llvm-project
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdouble-jump.test
30 lines (26 loc) · 987 Bytes
/
double-jump.test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
## Test the double jump removal peephole.
## This test has commands that rely on shell capabilities that won't execute
## correctly on Windows e.g. subshell execution
REQUIRES: shell
RUN: %clangxx %cxxflags %p/Inputs/double_jump.cpp -o %t.exe
RUN: (llvm-bolt %t.exe --peepholes=double-jumps \
RUN: --eliminate-unreachable -o %t 2>&1 \
RUN: && llvm-objdump -d %t --print-imm-hex --no-show-raw-insn) | FileCheck %s
CHECK: BOLT-INFO: Peephole: 1 double jumps patched.
CHECK: <_Z3foom>:
CHECK-NEXT: pushq %rbp
CHECK-NEXT: movq %rsp, %rbp
CHECK-NEXT: movq %rdi, -0x8(%rbp)
CHECK-NEXT: cmpq $0x1, -0x8(%rbp)
CHECK-NEXT: je {{.*}} <_Z3foom+0x2c>
CHECK-NEXT: incq -0x8(%rbp)
CHECK-NEXT: incq -0x8(%rbp)
CHECK-NEXT: cmpq $0x2, -0x8(%rbp)
CHECK-NEXT: je {{.*}} <_Z3foom+0x22>
CHECK-NEXT: incq -0x8(%rbp)
CHECK-NEXT: movq -0x8(%rbp), %rdi
CHECK-NEXT: popq %rbp
CHECK-NEXT: jmp {{.*}} <bar>
CHECK-NEXT: popq %rbp
CHECK-NEXT: incq -0x8(%rbp)
CHECK-NEXT: jmp {{.*}} <bar>