111791ae7SSayhaan Siddiqui## Test the double jump removal peephole. 28331f75eSAmir Ayupov 311791ae7SSayhaan Siddiqui## This test has commands that rely on shell capabilities that won't execute 411791ae7SSayhaan Siddiqui## correctly on Windows e.g. subshell execution 542a66fb7SRafael AulerREQUIRES: shell 642a66fb7SRafael Auler 7*003b48e0SRaul TambreRUN: %clangxx %cxxflags %p/Inputs/double_jump.cpp -o %t.exe 8d648aa1bSMaksim PanchenkoRUN: (llvm-bolt %t.exe --peepholes=double-jumps \ 9d648aa1bSMaksim PanchenkoRUN: --eliminate-unreachable -o %t 2>&1 \ 108331f75eSAmir AyupovRUN: && llvm-objdump -d %t --print-imm-hex --no-show-raw-insn) | FileCheck %s 118331f75eSAmir Ayupov 128331f75eSAmir AyupovCHECK: BOLT-INFO: Peephole: 1 double jumps patched. 138331f75eSAmir Ayupov 148331f75eSAmir AyupovCHECK: <_Z3foom>: 158331f75eSAmir AyupovCHECK-NEXT: pushq %rbp 168331f75eSAmir AyupovCHECK-NEXT: movq %rsp, %rbp 178331f75eSAmir AyupovCHECK-NEXT: movq %rdi, -0x8(%rbp) 188331f75eSAmir AyupovCHECK-NEXT: cmpq $0x1, -0x8(%rbp) 198331f75eSAmir AyupovCHECK-NEXT: je {{.*}} <_Z3foom+0x2c> 208331f75eSAmir AyupovCHECK-NEXT: incq -0x8(%rbp) 218331f75eSAmir AyupovCHECK-NEXT: incq -0x8(%rbp) 228331f75eSAmir AyupovCHECK-NEXT: cmpq $0x2, -0x8(%rbp) 238331f75eSAmir AyupovCHECK-NEXT: je {{.*}} <_Z3foom+0x22> 248331f75eSAmir AyupovCHECK-NEXT: incq -0x8(%rbp) 258331f75eSAmir AyupovCHECK-NEXT: movq -0x8(%rbp), %rdi 268331f75eSAmir AyupovCHECK-NEXT: popq %rbp 278331f75eSAmir AyupovCHECK-NEXT: jmp {{.*}} <bar> 288331f75eSAmir AyupovCHECK-NEXT: popq %rbp 298331f75eSAmir AyupovCHECK-NEXT: incq -0x8(%rbp) 308331f75eSAmir AyupovCHECK-NEXT: jmp {{.*}} <bar> 31