1*11791ae7SSayhaan Siddiqui## Verifies that llvm-bolt updates CFI correctly after 2*11791ae7SSayhaan Siddiqui## shrink-wrapping when optimizing a function without 3*11791ae7SSayhaan Siddiqui## frame pointers. 401a81dcaSAmir Ayupov 5*11791ae7SSayhaan Siddiqui## This test has commands that rely on shell capabilities that won't execute 6*11791ae7SSayhaan Siddiqui## correctly on Windows e.g. subshell execution to capture command output. 742a66fb7SRafael AulerREQUIRES: shell 842a66fb7SRafael Auler 9487570fbSAmir AyupovRUN: %clangxx %cxxflags -no-pie %S/Inputs/exc4sw.S -o %t.exe -Wl,-q 10d648aa1bSMaksim PanchenkoRUN: llvm-bolt %t.exe -o %t --relocs --frame-opt=all \ 11d648aa1bSMaksim PanchenkoRUN: --data=%p/Inputs/exc4sw.fdata --reorder-blocks=cache 2>&1 | \ 1201a81dcaSAmir AyupovRUN: FileCheck %s --check-prefix=CHECK-BOLT 1301a81dcaSAmir Ayupov 1401a81dcaSAmir AyupovRUN: llvm-objdump --dwarf=frames %t.exe | grep -A20 -e \ 1501a81dcaSAmir AyupovRUN: `llvm-nm --numeric-sort %t.exe | grep main | tail -n 1 | \ 1601a81dcaSAmir AyupovRUN: cut -f1 -d' ' | tail -c9` 2>&1 | FileCheck %s --check-prefix=CHECK-INPUT 1701a81dcaSAmir Ayupov 1801a81dcaSAmir AyupovRUN: llvm-objdump --dwarf=frames %t | grep -A20 -e \ 1901a81dcaSAmir AyupovRUN: `llvm-nm --numeric-sort %t | grep main | tail -n 1 | cut -f1 -d' ' | \ 2001a81dcaSAmir AyupovRUN: tail -c9` 2>&1 | FileCheck %s --check-prefix=CHECK-OUTPUT 2101a81dcaSAmir Ayupov 2201a81dcaSAmir AyupovCHECK-BOLT: Shrink wrapping moved 2 spills inserting load/stores and 0 spills inserting push/pops 2301a81dcaSAmir Ayupov 2401a81dcaSAmir AyupovCHECK-INPUT: DW_CFA_advance_loc: 2 2501a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_def_cfa_offset: +16 2601a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_offset: reg13 -16 2701a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_advance_loc: 2 2801a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_def_cfa_offset: +24 2901a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_offset: reg12 -24 3001a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_advance_loc: 1 3101a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_def_cfa_offset: +32 3201a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_offset: reg6 -32 3301a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_advance_loc: 6 3401a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_def_cfa_offset: +40 3501a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_offset: reg3 -40 3601a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_advance_loc: 6 3701a81dcaSAmir AyupovCHECK-INPUT-NEXT: DW_CFA_def_cfa_offset: +48 3801a81dcaSAmir Ayupov 3901a81dcaSAmir AyupovCHECK-OUTPUT: DW_CFA_advance_loc: 4 4001a81dcaSAmir AyupovCHECK-OUTPUT-NEXT: DW_CFA_def_cfa_offset: +16 4101a81dcaSAmir AyupovCHECK-OUTPUT-NEXT: DW_CFA_def_cfa_offset: +24 4201a81dcaSAmir AyupovCHECK-OUTPUT-NEXT: DW_CFA_advance_loc: 1 4301a81dcaSAmir AyupovCHECK-OUTPUT-NEXT: DW_CFA_def_cfa_offset: +32 4401a81dcaSAmir AyupovCHECK-OUTPUT-NEXT: DW_CFA_offset: reg6 -32 4501a81dcaSAmir AyupovCHECK-OUTPUT-NEXT: DW_CFA_advance_loc: 6 4601a81dcaSAmir AyupovCHECK-OUTPUT-NEXT: DW_CFA_def_cfa_offset: +40 4701a81dcaSAmir AyupovCHECK-OUTPUT-NEXT: DW_CFA_offset: reg3 -40 4801a81dcaSAmir AyupovCHECK-OUTPUT-NEXT: DW_CFA_advance_loc: 6 4901a81dcaSAmir AyupovCHECK-OUTPUT-NEXT: DW_CFA_def_cfa_offset: +48 50