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