31 lines
981 B
Plaintext
31 lines
981 B
Plaintext
# Test the double jump removqal peephole.
|
|
|
|
# This test has commands that rely on shell capabilities that won't execute
|
|
# correctly on Windows e.g. subshell execution
|
|
REQUIRES: shell
|
|
|
|
RUN: %clang %cflags %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>
|