xref: /llvm-project/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll (revision 2f448bf509432c1a19ec46ab8cbc7353c03c6280)
1; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=asm --frame-pointer=all -o - | FileCheck --check-prefix=SECTIONS_CFI %s
2; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=asm --frame-pointer=none -o - | FileCheck --check-prefix=SECTIONS_NOFP_CFI %s
3; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=obj --frame-pointer=all -o - | llvm-dwarfdump --eh-frame  - | FileCheck --check-prefix=EH_FRAME %s
4
5;; void f1();
6;; void f3(bool b) {
7;;   if (b)
8;;     f1();
9;; }
10
11
12; SECTIONS_CFI: _Z2f3b:
13; SECTIONS_CFI: .cfi_startproc
14; SECTIONS_CFI: .cfi_def_cfa_offset 16
15; SECTIONS_CFI: .cfi_offset %rbp, -16
16; SECTIONS_CFI: .cfi_def_cfa_register %rbp
17; SECTIONS_CFI: .cfi_endproc
18
19; SECTIONS_CFI: _Z2f3b.__part.1:
20; SECTIONS_CFI-NEXT: .cfi_startproc
21; SECTIONS_CFI-NEXT: .cfi_def_cfa %rbp, 16
22; SECTIONS_CFI-NEXT: .cfi_offset %rbp, -16
23; SECTIONS_CFI: .cfi_endproc
24
25; SECTIONS_CFI: _Z2f3b.__part.2:
26; SECTIONS_CFI-NEXT: .cfi_startproc
27; SECTIONS_CFI-NEXT: .cfi_def_cfa %rbp, 16
28; SECTIONS_CFI-NEXT: .cfi_offset %rbp, -16
29; SECTIONS_CFI: .cfi_def_cfa
30; SECTIONS_CFI: .cfi_endproc
31
32
33; SECTIONS_NOFP_CFI: _Z2f3b:
34; SECTIONS_NOFP_CFI: .cfi_startproc
35; SECTIONS_NOFP_CFI: .cfi_def_cfa_offset 16
36; SECTIONS_NOFP_CFI: .cfi_endproc
37
38; SECTIONS_NOFP_CFI: _Z2f3b.__part.1:
39; SECTIONS_NOFP_CFI-NEXT: .cfi_startproc
40; SECTIONS_NOFP_CFI-NEXT: .cfi_def_cfa %rsp, 16
41; SECTIONS_NOFP_CFI: .cfi_endproc
42
43; SECTIONS_NOFP_CFI: _Z2f3b.__part.2:
44; SECTIONS_NOFP_CFI-NEXT: .cfi_startproc
45; SECTIONS_NOFP_CFI-NEXT: .cfi_def_cfa %rsp, 16
46; SECTIONS_NOFP_CFI: .cfi_endproc
47
48
49;; There must be 1 CIE and 3 FDEs.
50
51; EH_FRAME: CIE
52; EH_FRAME: DW_CFA_def_cfa
53; EH_FRAME: DW_CFA_offset
54
55; EH_FRAME: FDE cie=
56; EH_FRAME: DW_CFA_def_cfa_offset
57; EH_FRAME: DW_CFA_offset
58; EH_FRAME: DW_CFA_def_cfa_register
59
60; EH_FRAME: FDE cie=
61; EH_FRAME: DW_CFA_def_cfa
62; EH_FRAME: DW_CFA_offset
63
64; EH_FRAME: FDE cie=
65; EH_FRAME: DW_CFA_def_cfa
66; EH_FRAME: DW_CFA_offset
67
68; Function Attrs: noinline optnone uwtable
69define dso_local void @_Z2f3b(i1 zeroext %b) {
70entry:
71  %b.addr = alloca i8, align 1
72  %frombool = zext i1 %b to i8
73  store i8 %frombool, ptr %b.addr, align 1
74  %0 = load i8, ptr %b.addr, align 1
75  %tobool = trunc i8 %0 to i1
76  br i1 %tobool, label %if.then, label %if.end
77
78if.then:                                          ; preds = %entry
79  call void @_Z2f1v()
80  br label %if.end
81
82if.end:                                           ; preds = %if.then, %entry
83  ret void
84}
85
86declare dso_local void @_Z2f1v()
87