From 278b31c092fc3ad918b729fb8b50ccc8dc6152e5 Mon Sep 17 00:00:00 2001 From: Francis Visoiu Mistrih Date: Fri, 15 Dec 2017 15:17:18 +0000 Subject: [MIR] Add support for missing CFI directives The following CFI directives are suported by MC but not by MIR: * .cfi_rel_offset * .cfi_adjust_cfa_offset * .cfi_escape * .cfi_remember_state * .cfi_restore_state * .cfi_undefined * .cfi_register * .cfi_window_save Add support for printing, parsing and update tests. Differential Revision: https://reviews.llvm.org/D41230 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320819 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/MIR/AArch64/cfi.mir | 57 +++++++++++--------------- test/CodeGen/MIR/X86/shrink_wrap_dbg_value.mir | 2 +- 2 files changed, 24 insertions(+), 35 deletions(-) (limited to 'test/CodeGen/MIR') diff --git a/test/CodeGen/MIR/AArch64/cfi.mir b/test/CodeGen/MIR/AArch64/cfi.mir index 8d9a2772afa..2a39c272ec6 100644 --- a/test/CodeGen/MIR/AArch64/cfi.mir +++ b/test/CodeGen/MIR/AArch64/cfi.mir @@ -11,49 +11,38 @@ ret void } - define void @trivial_fp_func_restore() { - entry: - call void @foo() - ret void - } - ... --- name: trivial_fp_func # CHECK-LABEL: name: trivial_fp_func body: | bb.0.entry: - liveins: %lr, %fp, %lr, %fp - - %sp = frame-setup STPXpre killed %fp, killed %lr, %sp, -2 - %fp = frame-setup ADDXri %sp, 0, 0 ; CHECK: CFI_INSTRUCTION def_cfa %w29, 16 frame-setup CFI_INSTRUCTION def_cfa %w29, 16 - frame-setup CFI_INSTRUCTION offset %w30, -8 - frame-setup CFI_INSTRUCTION offset %w29, -16 - BL @foo, csr_aarch64_aapcs, implicit-def dead %lr, implicit %sp, implicit-def %sp - %sp, %fp, %lr = LDPXpost %sp, 2 - RET_ReallyLR -... ---- -name: trivial_fp_func_restore -# CHECK-LABEL: name: trivial_fp_func_restore -body: | - bb.0.entry: - liveins: %lr, %fp - - %sp = frame-setup STPXpre killed %fp, killed %lr, %sp, -2 - %fp = frame-setup ADDXri %sp, 0, 0 - frame-setup CFI_INSTRUCTION def_cfa %w29, 16 - frame-setup CFI_INSTRUCTION offset %w30, -8 + ; CHECK: CFI_INSTRUCTION def_cfa_register %w29 + frame-setup CFI_INSTRUCTION def_cfa_register %w29 + ; CHECK: CFI_INSTRUCTION def_cfa_offset -8 + frame-setup CFI_INSTRUCTION def_cfa_offset -8 ; CHECK: CFI_INSTRUCTION offset %w30, -8 - frame-setup CFI_INSTRUCTION offset %w29, -16 - ; CHECK: CFI_INSTRUCTION offset %w29, -16 - BL @foo, csr_aarch64_aapcs, implicit-def dead %lr, implicit %sp, implicit-def %sp - %sp, %fp, %lr = LDPXpost %sp, 2 + frame-setup CFI_INSTRUCTION offset %w30, -8 + ; CHECK: CFI_INSTRUCTION rel_offset %w30, -8 + frame-setup CFI_INSTRUCTION rel_offset %w30, -8 + ; CHECK: CFI_INSTRUCTION adjust_cfa_offset -8 + frame-setup CFI_INSTRUCTION adjust_cfa_offset -8 CFI_INSTRUCTION restore %w30 ; CHECK: CFI_INSTRUCTION restore %w30 - CFI_INSTRUCTION restore %w29 - ; CHECK: CFI_INSTRUCTION restore %w29 + CFI_INSTRUCTION undefined %w30 + ; CHECK: CFI_INSTRUCTION undefined %w30 + CFI_INSTRUCTION same_value %w29 + ; CHECK: CFI_INSTRUCTION same_value %w29 + CFI_INSTRUCTION register %w20, %w30 + ; CHECK: CFI_INSTRUCTION register %w20, %w30 + CFI_INSTRUCTION remember_state + ; CHECK: CFI_INSTRUCTION remember_state + CFI_INSTRUCTION restore_state + ; CHECK: CFI_INSTRUCTION restore_state + CFI_INSTRUCTION escape 0x61, 0x62, 0x63 + ; CHECK: CFI_INSTRUCTION escape 0x61, 0x62, 0x63 + CFI_INSTRUCTION window_save + ; CHECK: CFI_INSTRUCTION window_save RET_ReallyLR -... diff --git a/test/CodeGen/MIR/X86/shrink_wrap_dbg_value.mir b/test/CodeGen/MIR/X86/shrink_wrap_dbg_value.mir index f6679467056..bdc214c8e7b 100644 --- a/test/CodeGen/MIR/X86/shrink_wrap_dbg_value.mir +++ b/test/CodeGen/MIR/X86/shrink_wrap_dbg_value.mir @@ -162,7 +162,7 @@ body: | ADJCALLSTACKDOWN32 4, 0, 4, implicit-def dead %esp, implicit-def dead %eflags, implicit-def dead %ssp, implicit %esp, implicit %ssp, debug-location !33 DBG_VALUE %fixed-stack.1, 0, !14, !DIExpression(), debug-location !20 PUSH32r %ebx, implicit-def %esp, implicit %esp, debug-location !33 - ;CFI_INSTRUCTION , debug-location !33 + CFI_INSTRUCTION adjust_cfa_offset 4, debug-location !33 CALLpcrel32 @doSomething, csr_32, implicit %esp, implicit %ssp, implicit-def %esp, implicit-def %ssp, implicit-def %eax, debug-location !33 ADJCALLSTACKUP32 4, 0, implicit-def dead %esp, implicit-def dead %eflags, implicit-def dead %ssp, implicit %esp, implicit %ssp, debug-location !33 %edi = INC32r killed %edi, implicit-def dead %eflags, debug-location !30 -- cgit v1.2.3