xref: /llvm-project/bolt/test/X86/shrinkwrapping.test (revision 11791ae7b0b05b8bd8d806331ff51da618912cf8)
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