87 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			LLVM
		
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			LLVM
		
	
	
	
| ; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=asm --frame-pointer=all -o - | FileCheck --check-prefix=SECTIONS_CFI %s
 | |
| ; RUN: llc -O0 %s --basic-block-sections=all -mtriple=x86_64 -filetype=asm --frame-pointer=none -o - | FileCheck --check-prefix=SECTIONS_NOFP_CFI %s
 | |
| ; 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
 | |
| 
 | |
| ;; void f1();
 | |
| ;; void f3(bool b) {
 | |
| ;;   if (b)
 | |
| ;;     f1();
 | |
| ;; }
 | |
| 
 | |
| 
 | |
| ; SECTIONS_CFI: _Z2f3b:
 | |
| ; SECTIONS_CFI: .cfi_startproc
 | |
| ; SECTIONS_CFI: .cfi_def_cfa_offset 16
 | |
| ; SECTIONS_CFI: .cfi_offset %rbp, -16
 | |
| ; SECTIONS_CFI: .cfi_def_cfa_register %rbp
 | |
| ; SECTIONS_CFI: .cfi_endproc
 | |
| 
 | |
| ; SECTIONS_CFI: _Z2f3b.__part.1:
 | |
| ; SECTIONS_CFI-NEXT: .cfi_startproc
 | |
| ; SECTIONS_CFI-NEXT: .cfi_def_cfa %rbp, 16
 | |
| ; SECTIONS_CFI-NEXT: .cfi_offset %rbp, -16
 | |
| ; SECTIONS_CFI: .cfi_endproc
 | |
| 
 | |
| ; SECTIONS_CFI: _Z2f3b.__part.2:
 | |
| ; SECTIONS_CFI-NEXT: .cfi_startproc
 | |
| ; SECTIONS_CFI-NEXT: .cfi_def_cfa %rbp, 16
 | |
| ; SECTIONS_CFI-NEXT: .cfi_offset %rbp, -16
 | |
| ; SECTIONS_CFI: .cfi_def_cfa
 | |
| ; SECTIONS_CFI: .cfi_endproc
 | |
| 
 | |
| 
 | |
| ; SECTIONS_NOFP_CFI: _Z2f3b:
 | |
| ; SECTIONS_NOFP_CFI: .cfi_startproc
 | |
| ; SECTIONS_NOFP_CFI: .cfi_def_cfa_offset 16
 | |
| ; SECTIONS_NOFP_CFI: .cfi_endproc
 | |
| 
 | |
| ; SECTIONS_NOFP_CFI: _Z2f3b.__part.1:
 | |
| ; SECTIONS_NOFP_CFI-NEXT: .cfi_startproc
 | |
| ; SECTIONS_NOFP_CFI-NEXT: .cfi_def_cfa %rsp, 16
 | |
| ; SECTIONS_NOFP_CFI: .cfi_endproc
 | |
| 
 | |
| ; SECTIONS_NOFP_CFI: _Z2f3b.__part.2:
 | |
| ; SECTIONS_NOFP_CFI-NEXT: .cfi_startproc
 | |
| ; SECTIONS_NOFP_CFI-NEXT: .cfi_def_cfa %rsp, 16
 | |
| ; SECTIONS_NOFP_CFI: .cfi_endproc
 | |
| 
 | |
| 
 | |
| ;; There must be 1 CIE and 3 FDEs.
 | |
| 
 | |
| ; EH_FRAME: CIE
 | |
| ; EH_FRAME: DW_CFA_def_cfa
 | |
| ; EH_FRAME: DW_CFA_offset
 | |
| 
 | |
| ; EH_FRAME: FDE cie=
 | |
| ; EH_FRAME: DW_CFA_def_cfa_offset
 | |
| ; EH_FRAME: DW_CFA_offset
 | |
| ; EH_FRAME: DW_CFA_def_cfa_register
 | |
| 
 | |
| ; EH_FRAME: FDE cie=
 | |
| ; EH_FRAME: DW_CFA_def_cfa
 | |
| ; EH_FRAME: DW_CFA_offset
 | |
| 
 | |
| ; EH_FRAME: FDE cie=
 | |
| ; EH_FRAME: DW_CFA_def_cfa
 | |
| ; EH_FRAME: DW_CFA_offset
 | |
| 
 | |
| ; Function Attrs: noinline optnone uwtable
 | |
| define dso_local void @_Z2f3b(i1 zeroext %b) {
 | |
| entry:
 | |
|   %b.addr = alloca i8, align 1
 | |
|   %frombool = zext i1 %b to i8
 | |
|   store i8 %frombool, i8* %b.addr, align 1
 | |
|   %0 = load i8, i8* %b.addr, align 1
 | |
|   %tobool = trunc i8 %0 to i1
 | |
|   br i1 %tobool, label %if.then, label %if.end
 | |
| 
 | |
| if.then:                                          ; preds = %entry
 | |
|   call void @_Z2f1v()
 | |
|   br label %if.end
 | |
| 
 | |
| if.end:                                           ; preds = %if.then, %entry
 | |
|   ret void
 | |
| }
 | |
| 
 | |
| declare dso_local void @_Z2f1v()
 |