1## Verifies that llvm-bolt updates CFI correctly after 2## shrink-wrapping when optimizing a function without 3## frame pointers. 4 5## This test has commands that rely on shell capabilities that won't execute 6## correctly on Windows e.g. subshell execution to capture command output. 7REQUIRES: shell 8 9RUN: %clangxx %cxxflags -no-pie %S/Inputs/exc4sw.S -o %t.exe -Wl,-q 10RUN: llvm-bolt %t.exe -o %t --relocs --frame-opt=all \ 11RUN: --data=%p/Inputs/exc4sw.fdata --reorder-blocks=cache 2>&1 | \ 12RUN: FileCheck %s --check-prefix=CHECK-BOLT 13 14RUN: llvm-objdump --dwarf=frames %t.exe | grep -A20 -e \ 15RUN: `llvm-nm --numeric-sort %t.exe | grep main | tail -n 1 | \ 16RUN: cut -f1 -d' ' | tail -c9` 2>&1 | FileCheck %s --check-prefix=CHECK-INPUT 17 18RUN: llvm-objdump --dwarf=frames %t | grep -A20 -e \ 19RUN: `llvm-nm --numeric-sort %t | grep main | tail -n 1 | cut -f1 -d' ' | \ 20RUN: tail -c9` 2>&1 | FileCheck %s --check-prefix=CHECK-OUTPUT 21 22CHECK-BOLT: Shrink wrapping moved 2 spills inserting load/stores and 0 spills inserting push/pops 23 24CHECK-INPUT: DW_CFA_advance_loc: 2 25CHECK-INPUT-NEXT: DW_CFA_def_cfa_offset: +16 26CHECK-INPUT-NEXT: DW_CFA_offset: reg13 -16 27CHECK-INPUT-NEXT: DW_CFA_advance_loc: 2 28CHECK-INPUT-NEXT: DW_CFA_def_cfa_offset: +24 29CHECK-INPUT-NEXT: DW_CFA_offset: reg12 -24 30CHECK-INPUT-NEXT: DW_CFA_advance_loc: 1 31CHECK-INPUT-NEXT: DW_CFA_def_cfa_offset: +32 32CHECK-INPUT-NEXT: DW_CFA_offset: reg6 -32 33CHECK-INPUT-NEXT: DW_CFA_advance_loc: 6 34CHECK-INPUT-NEXT: DW_CFA_def_cfa_offset: +40 35CHECK-INPUT-NEXT: DW_CFA_offset: reg3 -40 36CHECK-INPUT-NEXT: DW_CFA_advance_loc: 6 37CHECK-INPUT-NEXT: DW_CFA_def_cfa_offset: +48 38 39CHECK-OUTPUT: DW_CFA_advance_loc: 4 40CHECK-OUTPUT-NEXT: DW_CFA_def_cfa_offset: +16 41CHECK-OUTPUT-NEXT: DW_CFA_def_cfa_offset: +24 42CHECK-OUTPUT-NEXT: DW_CFA_advance_loc: 1 43CHECK-OUTPUT-NEXT: DW_CFA_def_cfa_offset: +32 44CHECK-OUTPUT-NEXT: DW_CFA_offset: reg6 -32 45CHECK-OUTPUT-NEXT: DW_CFA_advance_loc: 6 46CHECK-OUTPUT-NEXT: DW_CFA_def_cfa_offset: +40 47CHECK-OUTPUT-NEXT: DW_CFA_offset: reg3 -40 48CHECK-OUTPUT-NEXT: DW_CFA_advance_loc: 6 49CHECK-OUTPUT-NEXT: DW_CFA_def_cfa_offset: +48 50