[llvm] [X86][test] Auto-generate test checks for some cfi tests. (PR #177248)
Mikhail Gudim via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 23 10:19:06 PST 2026
https://github.com/mgudim updated https://github.com/llvm/llvm-project/pull/177248
>From 27aa273a6317a7cc6d6a97c0d20f6814f091c2b4 Mon Sep 17 00:00:00 2001
From: Mikhail Gudim <mgudim at qti.qualcomm.com>
Date: Wed, 21 Jan 2026 13:28:41 -0800
Subject: [PATCH 1/3] [X86][test] Auto-generate test checks for some cfi tests.
---
.../CodeGen/X86/cfi-basic-block-sections-1.ll | 1 +
.../CodeGen/X86/cfi-epilogue-with-return.mir | 59 +++++++++++--
.../X86/cfi-epilogue-without-return.mir | 69 ++++++++++++---
...ic-block-sections-callee-save-registers.ll | 1 +
.../cfi-inserter-callee-save-register-2.mir | 88 ++++++++++++++++---
.../X86/cfi-inserter-callee-save-register.mir | 28 +++++-
.../X86/cfi-inserter-cfg-with-merge.mir | 1 +
.../CodeGen/X86/cfi-inserter-check-order.ll | 1 +
.../X86/cfi-inserter-noreturnblock.mir | 1 +
.../cfi-inserter-verify-inconsistent-csr.mir | 1 +
.../cfi-inserter-verify-inconsistent-loc.mir | 1 +
...fi-inserter-verify-inconsistent-offset.mir | 1 +
...-inserter-verify-inconsistent-register.mir | 1 +
llvm/test/CodeGen/X86/cfi-xmm.ll | 16 ++++
llvm/test/CodeGen/X86/cfi.ll | 1 +
15 files changed, 234 insertions(+), 36 deletions(-)
diff --git a/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll b/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
index 1b7cf85f16579..1cc862a40b9fe 100644
--- a/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
+++ b/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
; 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
diff --git a/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir b/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir
index 4f80f4f87dd0d..43b394721b5c9 100644
--- a/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir
+++ b/llvm/test/CodeGen/X86/cfi-epilogue-with-return.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -o - %s -mtriple=x86_64-- -run-pass=prologepilog 2>&1 | FileCheck %s
--- |
define i64 @_Z3foob(i1 zeroext %cond) #0 {
@@ -8,11 +9,6 @@
---
# If the epilogue bb.1 is a return block, no .cfi_restore is
# needed in it.
-# CHECK: bb.1:
-# CHECK-NOT: CFI_INSTRUCTION restore
-# CHECK: RET 0
-# CHECK: bb.2:
-# CHECK: RET 0
name: _Z3foob
alignment: 16
tracksRegLiveness: true
@@ -27,13 +23,60 @@ frameInfo:
- point: '%bb.1'
machineFunctionInfo: {}
body: |
+ ; CHECK-LABEL: name: _Z3foob
+ ; CHECK: bb.0:
+ ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
+ ; CHECK-NEXT: liveins: $edi, $rbx, $r12, $r13, $r14, $r15
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
+ ; CHECK-NEXT: JCC_1 %bb.2, 4, implicit killed $eflags
+ ; CHECK-NEXT: JMP_1 %bb.1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.1:
+ ; CHECK-NEXT: liveins: $r15, $r14, $r13, $r12, $rbx
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16
+ ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $rbp, -16
+ ; CHECK-NEXT: $rbp = frame-setup MOV64rr $rsp
+ ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_register $rbp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $r15, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $r14, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $r13, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $r12, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $rbx, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $rbx, -56
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r12, -48
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r13, -40
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r14, -32
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r15, -24
+ ; CHECK-NEXT: renamable $rbx = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $r14 = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $r15 = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $r12 = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $r13 = IMPLICIT_DEF
+ ; CHECK-NEXT: dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
+ ; CHECK-NEXT: $rbx = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $r13 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $r15 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION def_cfa $rsp, 8
+ ; CHECK-NEXT: RET 0, killed $rax
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.2:
+ ; CHECK-NEXT: liveins: $rbx, $r12, $r13, $r14, $r15
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
+ ; CHECK-NEXT: RET 0, killed $rax
bb.0:
liveins: $edi
-
+
TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
JCC_1 %bb.2, 4, implicit killed $eflags
JMP_1 %bb.1
-
+
bb.1:
renamable $rbx = IMPLICIT_DEF
renamable $r14 = IMPLICIT_DEF
@@ -42,7 +85,7 @@ body: |
renamable $r13 = IMPLICIT_DEF
dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
RET 0, killed $rax
-
+
bb.2:
dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
RET 0, killed $rax
diff --git a/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir b/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir
index 38c081c94ab91..243d800200c29 100644
--- a/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir
+++ b/llvm/test/CodeGen/X86/cfi-epilogue-without-return.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -o - %s -mtriple=x86_64-- -run-pass=prologepilog 2>&1 | FileCheck %s
--- |
declare dso_local void @_Z3goov()
@@ -10,16 +11,6 @@
# If the epilogue bb.1.if.then is not a return block, .cfi_restore is
# needed in it, otherwise bb.2.return will see different outgoing CFI
# information from its predecessors.
-# CHECK: bb.1:
-# CHECK: CFI_INSTRUCTION restore $rbx
-# CHECK-NEXT: CFI_INSTRUCTION restore $r12
-# CHECK-NEXT: CFI_INSTRUCTION restore $r13
-# CHECK-NEXT: CFI_INSTRUCTION restore $r14
-# CHECK-NEXT: CFI_INSTRUCTION restore $r15
-# CHECK-NEXT: CFI_INSTRUCTION restore $rbp
-# CHECK-NOT: RET 0
-# CHECK: bb.2:
-# CHECK: RET 0
name: _Z3foob
alignment: 16
tracksRegLiveness: true
@@ -34,20 +25,72 @@ frameInfo:
- point: '%bb.1'
machineFunctionInfo: {}
body: |
+ ; CHECK-LABEL: name: _Z3foob
+ ; CHECK: bb.0:
+ ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
+ ; CHECK-NEXT: liveins: $edi, $rbx, $r12, $r13, $r14, $r15
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
+ ; CHECK-NEXT: JCC_1 %bb.2, 4, implicit killed $eflags
+ ; CHECK-NEXT: JMP_1 %bb.1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.1:
+ ; CHECK-NEXT: successors: %bb.2(0x80000000)
+ ; CHECK-NEXT: liveins: $r15, $r14, $r13, $r12, $rbx
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 16
+ ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $rbp, -16
+ ; CHECK-NEXT: $rbp = frame-setup MOV64rr $rsp
+ ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_register $rbp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $r15, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $r14, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $r13, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $r12, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $rbx, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $rbx, -56
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r12, -48
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r13, -40
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r14, -32
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r15, -24
+ ; CHECK-NEXT: renamable $rbx = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $r14 = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $r15 = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $r12 = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $r13 = IMPLICIT_DEF
+ ; CHECK-NEXT: $rbx = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $r13 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $r15 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION def_cfa $rsp, 8
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $rbx
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $r12
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $r13
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $r14
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $r15
+ ; CHECK-NEXT: frame-destroy CFI_INSTRUCTION restore $rbp
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.2:
+ ; CHECK-NEXT: liveins: $rbx, $r12, $r13, $r14, $r15
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
+ ; CHECK-NEXT: RET 0, killed $rax
bb.0:
liveins: $edi
-
+
TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
JCC_1 %bb.2, 4, implicit killed $eflags
JMP_1 %bb.1
-
+
bb.1:
renamable $rbx = IMPLICIT_DEF
renamable $r14 = IMPLICIT_DEF
renamable $r15 = IMPLICIT_DEF
renamable $r12 = IMPLICIT_DEF
renamable $r13 = IMPLICIT_DEF
-
+
bb.2:
dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
RET 0, killed $rax
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-basic-block-sections-callee-save-registers.ll b/llvm/test/CodeGen/X86/cfi-inserter-basic-block-sections-callee-save-registers.ll
index 5fda94694ff43..d30711c234689 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-basic-block-sections-callee-save-registers.ll
+++ b/llvm/test/CodeGen/X86/cfi-inserter-basic-block-sections-callee-save-registers.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
;; This test checks if CFI instructions for all callee saved registers are emitted
;; correctly with basic block sections.
; RUN: llc %s -mtriple=x86_64 -filetype=asm --basic-block-sections=all --frame-pointer=all -o - | FileCheck --check-prefix=SECTIONS_CFI %s
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
index e85126d649be4..193b0343fdbe1 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
# RUN: -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
# Test that CFI inserter inserts .cfi_offset/.cfi_register/.cfi_rel_offset
@@ -8,11 +9,6 @@
}
...
---
-# CHECK: bb.3:
-# CHECK: CFI_INSTRUCTION offset $rbp, -16
-# CHECK-NEXT: CFI_INSTRUCTION offset $r12, -24
-# CHECK-NEXT: CFI_INSTRUCTION register $r13, $rcx
-# CHECK-NEXT: CFI_INSTRUCTION offset $r14, -40
name: foo
alignment: 16
tracksRegLiveness: true
@@ -33,10 +29,78 @@ fixedStack:
- { id: 4, type: spill-slot, offset: -24, size: 8, alignment: 8 }
machineFunctionInfo: {}
body: |
+ ; CHECK-LABEL: name: foo
+ ; CHECK: bb.0:
+ ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
+ ; CHECK-NEXT: liveins: $edi, $r12, $r13, $r14
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: CFI_INSTRUCTION def_cfa_offset 16
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $rbp, -16
+ ; CHECK-NEXT: $rbp = frame-setup MOV64rr $rsp
+ ; CHECK-NEXT: CFI_INSTRUCTION def_cfa_register $rbp
+ ; CHECK-NEXT: frame-setup PUSH64r killed $r12, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $rcx = frame-setup COPY $r13
+ ; CHECK-NEXT: frame-setup PUSH64r killed $r14, implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r12, -24
+ ; CHECK-NEXT: CFI_INSTRUCTION register $r13, $rcx
+ ; CHECK-NEXT: CFI_INSTRUCTION rel_offset $r14, -24
+ ; CHECK-NEXT: TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
+ ; CHECK-NEXT: JCC_1 %bb.2, 4, implicit killed $eflags
+ ; CHECK-NEXT: JMP_1 %bb.1
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.1:
+ ; CHECK-NEXT: successors: %bb.3(0x80000000)
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: renamable $r12 = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $r13 = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $r14 = IMPLICIT_DEF
+ ; CHECK-NEXT: JMP_1 %bb.3
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.2:
+ ; CHECK-NEXT: liveins: $rcx
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
+ ; CHECK-NEXT: $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $r13 = frame-destroy COPY $rcx
+ ; CHECK-NEXT: $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $rbp
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $r12
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $r13
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $r14
+ ; CHECK-NEXT: CFI_INSTRUCTION def_cfa $rsp, 8
+ ; CHECK-NEXT: RET 0, killed $rax
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.3:
+ ; CHECK-NEXT: successors: %bb.4(0x80000000)
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: CFI_INSTRUCTION def_cfa $rbp, 16
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r12, -24
+ ; CHECK-NEXT: CFI_INSTRUCTION register $r13, $rcx
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $r14, -40
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $rbp, -16
+ ; CHECK-NEXT: renamable $rdi = IMPLICIT_DEF
+ ; CHECK-NEXT: renamable $rsi = IMPLICIT_DEF
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.4:
+ ; CHECK-NEXT: liveins: $rcx
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
+ ; CHECK-NEXT: $r12 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $r13 = frame-destroy COPY $rcx
+ ; CHECK-NEXT: $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $rbp
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $r12
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $r13
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $r14
+ ; CHECK-NEXT: CFI_INSTRUCTION def_cfa $rsp, 8
+ ; CHECK-NEXT: RET 0, killed $rax
bb.0:
successors: %bb.2(0x40000000), %bb.1(0x40000000)
liveins: $edi, $r12, $r13, $r14
-
+
frame-setup PUSH64r killed $rbp, implicit-def $rsp, implicit $rsp
CFI_INSTRUCTION def_cfa_offset 16
CFI_INSTRUCTION offset $rbp, -16
@@ -51,15 +115,15 @@ body: |
TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
JCC_1 %bb.2, 4, implicit killed $eflags
JMP_1 %bb.1
-
+
bb.1:
successors: %bb.3(0x80000000)
-
+
renamable $r12 = IMPLICIT_DEF
renamable $r13 = IMPLICIT_DEF
renamable $r14 = IMPLICIT_DEF
JMP_1 %bb.3
-
+
bb.2:
liveins: $rcx
dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
@@ -73,13 +137,13 @@ body: |
CFI_INSTRUCTION restore $r14
CFI_INSTRUCTION def_cfa $rsp, 8
RET 0, killed $rax
-
+
bb.3:
successors: %bb.4(0x80000000)
-
+
renamable $rdi = IMPLICIT_DEF
renamable $rsi = IMPLICIT_DEF
-
+
bb.4:
liveins: $rcx
dead $eax = MOV32r0 implicit-def dead $eflags, implicit-def $rax
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register.mir b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register.mir
index b17c9a67abb18..abcb0743aa21b 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
# RUN: -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
# Test that CFI inserter inserts .cfi_restore properly for
@@ -8,11 +9,32 @@
}
...
---
-# CHECK: bb.3:
-# CHECK: CFI_INSTRUCTION restore $rbx
-# CHECK-NEXT: CFI_INSTRUCTION restore $rbp
name: foo
body: |
+ ; CHECK-LABEL: name: foo
+ ; CHECK: bb.0:
+ ; CHECK-NEXT: successors: %bb.2(0x40000000), %bb.1(0x40000000)
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
+ ; CHECK-NEXT: JCC_1 %bb.2, 5, implicit killed $eflags
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.1:
+ ; CHECK-NEXT: successors: %bb.3(0x80000000)
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: JMP_1 %bb.3
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.2:
+ ; CHECK-NEXT: CFI_INSTRUCTION def_cfa_offset 16
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $rbp, -16
+ ; CHECK-NEXT: CFI_INSTRUCTION def_cfa_register $rbp
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $rbx, -24
+ ; CHECK-NEXT: CFI_INSTRUCTION def_cfa $rsp, 8
+ ; CHECK-NEXT: RET 0, $rax
+ ; CHECK-NEXT: {{ $}}
+ ; CHECK-NEXT: bb.3:
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $rbx
+ ; CHECK-NEXT: CFI_INSTRUCTION restore $rbp
+ ; CHECK-NEXT: RET 0, $rax
bb.0:
TEST8rr renamable $dil, renamable $dil, implicit-def $eflags, implicit killed $edi
JCC_1 %bb.2, 5, implicit killed $eflags
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir b/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
index ffd1b21370aa3..250063b6c0dc2 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs -run-pass=cfi-instr-inserter
--- |
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll b/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
index d2f47c2d66b5f..e350d994a3677 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
+++ b/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
; RUN: llc -mtriple=x86_64-- -O2 -enable-machine-outliner -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s
; REQUIRES: asserts
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-noreturnblock.mir b/llvm/test/CodeGen/X86/cfi-inserter-noreturnblock.mir
index a1b3a68c85fc3..e8642b564e39b 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-noreturnblock.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-noreturnblock.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
# RUN: -run-pass=cfi-instr-inserter
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-csr.mir b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-csr.mir
index 63957ae5229fa..e4a47e009f754 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-csr.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-csr.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: not --crash llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
# RUN: -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
# Test that CFI verifier finds inconsistent csr saved set between bb.end and
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-loc.mir b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-loc.mir
index 8211f8940d27a..444c14ef6a369 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-loc.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-loc.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: not --crash llc -o - %s -mtriple=x86_64-- \
# RUN: -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
# Test that CSR being saved in multiple locations can be caught by
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-offset.mir b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-offset.mir
index fd726b882b561..4d1ea3f5d1028 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-offset.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-offset.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: not --crash llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
# RUN: -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
# Test that CFI verifier finds inconsistent offset between bb.end and one of
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-register.mir b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-register.mir
index 30344edc259ce..3e7f0b790058f 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-register.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-verify-inconsistent-register.mir
@@ -1,3 +1,4 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: not --crash llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs \
# RUN: -run-pass=cfi-instr-inserter 2>&1 | FileCheck %s
# Test that CFI verifier finds inconsistent register between bb.end and one of
diff --git a/llvm/test/CodeGen/X86/cfi-xmm.ll b/llvm/test/CodeGen/X86/cfi-xmm.ll
index 76c59ffdf9422..5cf4fb07acffe 100644
--- a/llvm/test/CodeGen/X86/cfi-xmm.ll
+++ b/llvm/test/CodeGen/X86/cfi-xmm.ll
@@ -1,7 +1,23 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
; RUN: llc -mtriple x86_64-w64-windows-gnu -filetype=asm -exception-model=dwarf -o - %s | FileCheck %s
; RUN: llc < %s -mtriple x86_64-w64-windows-gnu -exception-model=dwarf -stop-after=prologepilog | FileCheck %s --check-prefix=PEI
define void @_Z1fv() {
+ ; PEI-LABEL: name: _Z1fv
+ ; PEI: bb.0.entry:
+ ; PEI-NEXT: liveins: $xmm15, $xmm10
+ ; PEI-NEXT: {{ $}}
+ ; PEI-NEXT: $rsp = frame-setup SUB64ri32 $rsp, 40, implicit-def dead $eflags
+ ; PEI-NEXT: frame-setup MOVAPSmr $rsp, 1, $noreg, 16, $noreg, killed $xmm15 :: (store (s128) into %fixed-stack.1)
+ ; PEI-NEXT: frame-setup MOVAPSmr $rsp, 1, $noreg, 0, $noreg, killed $xmm10 :: (store (s128) into %fixed-stack.0)
+ ; PEI-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 48
+ ; PEI-NEXT: CFI_INSTRUCTION offset $xmm10, -48
+ ; PEI-NEXT: CFI_INSTRUCTION offset $xmm15, -32
+ ; PEI-NEXT: INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $xmm10, 12 /* clobber */, implicit-def dead early-clobber $xmm15, 12 /* clobber */, implicit-def dead early-clobber $df, 12 /* clobber */, implicit-def early-clobber $fpsw, 12 /* clobber */, implicit-def dead early-clobber $eflags
+ ; PEI-NEXT: $xmm10 = MOVAPSrm $rsp, 1, $noreg, 0, $noreg :: (load (s128) from %fixed-stack.0)
+ ; PEI-NEXT: $xmm15 = MOVAPSrm $rsp, 1, $noreg, 16, $noreg :: (load (s128) from %fixed-stack.1)
+ ; PEI-NEXT: $rsp = frame-destroy ADD64ri32 $rsp, 40, implicit-def dead $eflags
+ ; PEI-NEXT: RET 0
entry:
tail call void asm sideeffect "", "~{xmm10},~{xmm15},~{dirflag},~{fpsr},~{flags}"()
ret void
diff --git a/llvm/test/CodeGen/X86/cfi.ll b/llvm/test/CodeGen/X86/cfi.ll
index 5a09577636260..9e9ea4a23c84b 100644
--- a/llvm/test/CodeGen/X86/cfi.ll
+++ b/llvm/test/CodeGen/X86/cfi.ll
@@ -1,3 +1,4 @@
+; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck --check-prefix=STATIC %s
; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -relocation-model=pic | FileCheck --check-prefix=PIC %s
>From 24988485e3c062409cad6e6ac0c3802ed70c0be5 Mon Sep 17 00:00:00 2001
From: Mikhail Gudim <mgudim at qti.qualcomm.com>
Date: Thu, 22 Jan 2026 10:36:36 -0800
Subject: [PATCH 2/3] Fixed CI failures.
---
.../cfi-inserter-callee-save-register-2.mir | 2 +-
llvm/test/CodeGen/X86/cfi-xmm-asm.ll | 22 +++++++++++++++
llvm/test/CodeGen/X86/cfi-xmm.ll | 28 -------------------
3 files changed, 23 insertions(+), 29 deletions(-)
create mode 100644 llvm/test/CodeGen/X86/cfi-xmm-asm.ll
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
index 193b0343fdbe1..a08a3166a1285 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-callee-save-register-2.mir
@@ -76,10 +76,10 @@ body: |
; CHECK-NEXT: successors: %bb.4(0x80000000)
; CHECK-NEXT: {{ $}}
; CHECK-NEXT: CFI_INSTRUCTION def_cfa $rbp, 16
+ ; CHECK-NEXT: CFI_INSTRUCTION offset $rbp, -16
; CHECK-NEXT: CFI_INSTRUCTION offset $r12, -24
; CHECK-NEXT: CFI_INSTRUCTION register $r13, $rcx
; CHECK-NEXT: CFI_INSTRUCTION offset $r14, -40
- ; CHECK-NEXT: CFI_INSTRUCTION offset $rbp, -16
; CHECK-NEXT: renamable $rdi = IMPLICIT_DEF
; CHECK-NEXT: renamable $rsi = IMPLICIT_DEF
; CHECK-NEXT: {{ $}}
diff --git a/llvm/test/CodeGen/X86/cfi-xmm-asm.ll b/llvm/test/CodeGen/X86/cfi-xmm-asm.ll
new file mode 100644
index 0000000000000..530c522a318bc
--- /dev/null
+++ b/llvm/test/CodeGen/X86/cfi-xmm-asm.ll
@@ -0,0 +1,22 @@
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
+; RUN: llc -mtriple x86_64-w64-windows-gnu -filetype=asm -exception-model=dwarf -o - %s | FileCheck %s
+
+define void @_Z1fv() {
+; CHECK-LABEL: _Z1fv:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: subq $40, %rsp
+; CHECK-NEXT: movaps %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill
+; CHECK-NEXT: movaps %xmm10, (%rsp) # 16-byte Spill
+; CHECK-NEXT: .cfi_def_cfa_offset 48
+; CHECK-NEXT: .cfi_offset %xmm10, -48
+; CHECK-NEXT: .cfi_offset %xmm15, -32
+; CHECK-NEXT: #APP
+; CHECK-NEXT: #NO_APP
+; CHECK-NEXT: movaps (%rsp), %xmm10 # 16-byte Reload
+; CHECK-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload
+; CHECK-NEXT: addq $40, %rsp
+; CHECK-NEXT: retq
+entry:
+ tail call void asm sideeffect "", "~{xmm10},~{xmm15},~{dirflag},~{fpsr},~{flags}"()
+ ret void
+}
diff --git a/llvm/test/CodeGen/X86/cfi-xmm.ll b/llvm/test/CodeGen/X86/cfi-xmm.ll
index 5cf4fb07acffe..fa972d04f5cef 100644
--- a/llvm/test/CodeGen/X86/cfi-xmm.ll
+++ b/llvm/test/CodeGen/X86/cfi-xmm.ll
@@ -1,5 +1,4 @@
; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
-; RUN: llc -mtriple x86_64-w64-windows-gnu -filetype=asm -exception-model=dwarf -o - %s | FileCheck %s
; RUN: llc < %s -mtriple x86_64-w64-windows-gnu -exception-model=dwarf -stop-after=prologepilog | FileCheck %s --check-prefix=PEI
define void @_Z1fv() {
@@ -22,30 +21,3 @@ entry:
tail call void asm sideeffect "", "~{xmm10},~{xmm15},~{dirflag},~{fpsr},~{flags}"()
ret void
}
-
-; CHECK-LABEL: _Z1fv:
-; CHECK: .cfi_startproc
-; CHECK: subq $40, %rsp
-; CHECK: movaps %xmm15, 16(%rsp)
-; CHECK: movaps %xmm10, (%rsp)
-; CHECK: .cfi_def_cfa_offset 48
-; CHECK: .cfi_offset %xmm10, -48
-; CHECK: .cfi_offset %xmm15, -32
-; CHECK: movaps (%rsp), %xmm10
-; CHECK: movaps 16(%rsp), %xmm15
-; CHECK: addq $40, %rsp
-; CHECK: retq
-; CHECK: .cfi_endproc
-
-; PEI-LABEL: name: _Z1fv
-; PEI: $rsp = frame-setup SUB64ri32 $rsp, 40, implicit-def dead $eflags
-; PEI-NEXT: frame-setup MOVAPSmr $rsp, 1, $noreg, 16, $noreg, killed $xmm15 :: (store (s128) into %fixed-stack.1)
-; PEI-NEXT: frame-setup MOVAPSmr $rsp, 1, $noreg, 0, $noreg, killed $xmm10 :: (store (s128) into %fixed-stack.0)
-; PEI-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 48
-; PEI-NEXT: {{^ +}}CFI_INSTRUCTION offset $xmm10, -48
-; PEI-NEXT: {{^ +}}CFI_INSTRUCTION offset $xmm15, -32
-; PEI-NEXT: INLINEASM {{.*}}
-; PEI-NEXT: $xmm10 = MOVAPSrm $rsp, 1, $noreg, 0, $noreg :: (load (s128) from %fixed-stack.0)
-; PEI-NEXT: $xmm15 = MOVAPSrm $rsp, 1, $noreg, 16, $noreg :: (load (s128) from %fixed-stack.1)
-; PEI-NEXT: $rsp = frame-destroy ADD64ri32 $rsp, 40, implicit-def dead $eflags
-; PEI-NEXT: RET 0
>From 6531d211492c1513271e37eafcf37e17382a3b40 Mon Sep 17 00:00:00 2001
From: Mikhail Gudim <mgudim at qti.qualcomm.com>
Date: Fri, 23 Jan 2026 10:16:43 -0800
Subject: [PATCH 3/3] removed banners from tests where checks can not be
auto-generated. split cfi-basic-block-sections test so that one part can be
auto-generated.
---
.../CodeGen/X86/cfi-basic-block-sections-1.ll | 86 ++++++-------------
.../X86/cfi-basic-block-sections-eh-frame.ll | 40 +++++++++
.../X86/cfi-inserter-cfg-with-merge.mir | 1 -
.../CodeGen/X86/cfi-inserter-check-order.ll | 1 -
4 files changed, 68 insertions(+), 60 deletions(-)
create mode 100644 llvm/test/CodeGen/X86/cfi-basic-block-sections-eh-frame.ll
diff --git a/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll b/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
index 1cc862a40b9fe..a63de08341a6d 100644
--- a/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
+++ b/llvm/test/CodeGen/X86/cfi-basic-block-sections-1.ll
@@ -1,7 +1,6 @@
-; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
+; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; 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) {
@@ -10,64 +9,35 @@
;; }
-; 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) {
+; SECTIONS_CFI-LABEL: _Z2f3b:
+; SECTIONS_CFI: # %bb.0: # %entry
+; SECTIONS_CFI-NEXT: pushq %rbp
+; SECTIONS_CFI-NEXT: .cfi_def_cfa_offset 16
+; SECTIONS_CFI-NEXT: .cfi_offset %rbp, -16
+; SECTIONS_CFI-NEXT: movq %rsp, %rbp
+; SECTIONS_CFI-NEXT: .cfi_def_cfa_register %rbp
+; SECTIONS_CFI-NEXT: subq $16, %rsp
+; SECTIONS_CFI-NEXT: movb %dil, %al
+; SECTIONS_CFI-NEXT: andb $1, %al
+; SECTIONS_CFI-NEXT: movb %al, -1(%rbp)
+; SECTIONS_CFI-NEXT: testb $1, -1(%rbp)
+; SECTIONS_CFI-NEXT: je _Z2f3b.__part.2
+; SECTIONS_CFI-NEXT: jmp _Z2f3b.__part.1
+; SECTIONS_CFI-NEXT: .LBB_END0_0:
+;
+; SECTIONS_NOFP_CFI-LABEL: _Z2f3b:
+; SECTIONS_NOFP_CFI: # %bb.0: # %entry
+; SECTIONS_NOFP_CFI-NEXT: pushq %rax
+; SECTIONS_NOFP_CFI-NEXT: .cfi_def_cfa_offset 16
+; SECTIONS_NOFP_CFI-NEXT: movb %dil, %al
+; SECTIONS_NOFP_CFI-NEXT: andb $1, %al
+; SECTIONS_NOFP_CFI-NEXT: movb %al, {{[0-9]+}}(%rsp)
+; SECTIONS_NOFP_CFI-NEXT: testb $1, {{[0-9]+}}(%rsp)
+; SECTIONS_NOFP_CFI-NEXT: je _Z2f3b.__part.2
+; SECTIONS_NOFP_CFI-NEXT: jmp _Z2f3b.__part.1
+; SECTIONS_NOFP_CFI-NEXT: .LBB_END0_0:
entry:
%b.addr = alloca i8, align 1
%frombool = zext i1 %b to i8
diff --git a/llvm/test/CodeGen/X86/cfi-basic-block-sections-eh-frame.ll b/llvm/test/CodeGen/X86/cfi-basic-block-sections-eh-frame.ll
new file mode 100644
index 0000000000000..d79cb25af02fb
--- /dev/null
+++ b/llvm/test/CodeGen/X86/cfi-basic-block-sections-eh-frame.ll
@@ -0,0 +1,40 @@
+; 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
+
+; Function Attrs: noinline optnone uwtable
+define dso_local void @_Z2f3b(i1 zeroext %b) {
+;; 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
+
+entry:
+ %b.addr = alloca i8, align 1
+ %frombool = zext i1 %b to i8
+ store i8 %frombool, ptr %b.addr, align 1
+ %0 = load i8, ptr %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()
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir b/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
index 250063b6c0dc2..ffd1b21370aa3 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
+++ b/llvm/test/CodeGen/X86/cfi-inserter-cfg-with-merge.mir
@@ -1,4 +1,3 @@
-# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
# RUN: llc -o - %s -mtriple=x86_64-- -verify-cfiinstrs -run-pass=cfi-instr-inserter
--- |
diff --git a/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll b/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
index e350d994a3677..d2f47c2d66b5f 100644
--- a/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
+++ b/llvm/test/CodeGen/X86/cfi-inserter-check-order.ll
@@ -1,4 +1,3 @@
-; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 6
; RUN: llc -mtriple=x86_64-- -O2 -enable-machine-outliner -debug-pass=Structure < %s -o /dev/null 2>&1 | FileCheck %s
; REQUIRES: asserts
More information about the llvm-commits
mailing list