llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-x86 Author: llvmbot <details> <summary>Changes</summary> Backport cb474be Requested by: @<!-- -->folkertdev --- Patch is 26.91 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/228924.diff 13 Files Affected: - (modified) llvm/lib/Target/X86/X86FrameLowering.cpp (+6-3) - (modified) llvm/lib/Target/X86/X86WinEHUnwindV2.cpp (+6-3) - (modified) llvm/lib/Target/X86/X86WinEHUnwindV3.cpp (+2-1) - (modified) llvm/test/CodeGen/X86/taildup-callsiteinfo.mir (+2-2) - (modified) llvm/test/CodeGen/X86/win64-eh-empty-block-2.mir (+4-4) - (modified) llvm/test/CodeGen/X86/win64-eh-unwindv2-errors.mir (+28-28) - (modified) llvm/test/CodeGen/X86/win64-eh-unwindv2-push-pop-stack-alloc.mir (+18-18) - (modified) llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-epilogs.mir (+23-21) - (modified) llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-instr.mir (+26-18) - (modified) llvm/test/CodeGen/X86/win64-eh-unwindv3-split-large.ll (+18) - (modified) llvm/test/CodeGen/X86/win64-eh-unwindv3-too-many-epilog-ops.mir (+34-34) - (modified) llvm/test/CodeGen/X86/win64-eh-unwindv3-too-many-prolog-ops.mir (+2-2) - (modified) llvm/test/DebugInfo/MIR/X86/instr-ref-join-def-vphi.mir (+2-2) ``````````diff diff --git a/llvm/lib/Target/X86/X86FrameLowering.cpp b/llvm/lib/Target/X86/X86FrameLowering.cpp index a657c7d3873e5..a27e816b7c8f8 100644 --- a/llvm/lib/Target/X86/X86FrameLowering.cpp +++ b/llvm/lib/Target/X86/X86FrameLowering.cpp @@ -2711,7 +2711,8 @@ void X86FrameLowering::emitEpilogue(MachineFunction &MF, } // For V3, SEH_BeginEpilogue must be emitted before any epilog SEH pseudos. - BuildMI(MBB, EpilogStart, DL, TII.get(X86::SEH_BeginEpilogue)); + BuildMI(MBB, EpilogStart, DL, TII.get(X86::SEH_BeginEpilogue)) + .setMIFlag(MachineInstr::FrameDestroy); } // If dynamic alloca is used, then reset esp to point to the last callee-saved @@ -2774,7 +2775,8 @@ void X86FrameLowering::emitEpilogue(MachineFunction &MF, // For V1/V2, emit SEH_BeginEpilogue after stack restore code. if (!IsWin64UnwindV3 && NeedsWin64CFI && MF.hasWinCFI()) - BuildMI(MBB, MBBI, DL, TII.get(X86::SEH_BeginEpilogue)); + BuildMI(MBB, MBBI, DL, TII.get(X86::SEH_BeginEpilogue)) + .setMIFlag(MachineInstr::FrameDestroy); if (!HasFP && NeedsDwarfCFI) { MBBI = FirstCSPop; @@ -2821,7 +2823,8 @@ void X86FrameLowering::emitEpilogue(MachineFunction &MF, BuildMI(MBB, Terminator, DL, TII.get(X86::TILERELEASE)); if (NeedsWin64CFI && MF.hasWinCFI()) - BuildMI(MBB, Terminator, DL, TII.get(X86::SEH_EndEpilogue)); + BuildMI(MBB, Terminator, DL, TII.get(X86::SEH_EndEpilogue)) + .setMIFlag(MachineInstr::FrameDestroy); } StackOffset X86FrameLowering::getFrameIndexReference(const MachineFunction &MF, diff --git a/llvm/lib/Target/X86/X86WinEHUnwindV2.cpp b/llvm/lib/Target/X86/X86WinEHUnwindV2.cpp index 79b91206e9d5b..bfab37f4871c6 100644 --- a/llvm/lib/Target/X86/X86WinEHUnwindV2.cpp +++ b/llvm/lib/Target/X86/X86WinEHUnwindV2.cpp @@ -418,13 +418,15 @@ bool runX86WinEHUnwindV2(MachineFunction &MF) { MachineBasicBlock &MBB = *Info.UnwindV2StartLocation->getParent(); const DebugLoc &DL = Info.UnwindV2StartLocation->getDebugLoc(); BuildMI(MBB, Info.UnwindV2StartLocation, DL, - TII->get(X86::SEH_UnwindV2Start)); + TII->get(X86::SEH_UnwindV2Start)) + .setMIFlag(MachineInstr::FrameDestroy); if ((LastUnwindInfoEndPosition - Info.ApproximateInstructionPosition >= InstructionCountThreshold) || (UnwindCodeCount >= UnwindCodeThreshold)) { BuildMI(MBB, MBB.begin(), DL, - TII->get(X86::SEH_SplitChainedAtEndOfBlock)); + TII->get(X86::SEH_SplitChainedAtEndOfBlock)) + .setMIFlag(MachineInstr::FrameDestroy); LastUnwindInfoEndPosition = Info.ApproximateInstructionPosition; // Doesn't reset to 0, as the prolog unwind codes are now in this info. UnwindCodeCount = FI.ApproximatePrologCodeCount + 1; @@ -438,7 +440,8 @@ bool runX86WinEHUnwindV2(MachineFunction &MF) { MachineBasicBlock &FirstMBB = MF.front(); BuildMI(FirstMBB, FirstMBB.front(), findDebugLoc(FirstMBB), TII->get(X86::SEH_UnwindVersion)) - .addImm(2); + .addImm(2) + .setMIFlag(MachineInstr::FrameSetup); return true; } diff --git a/llvm/lib/Target/X86/X86WinEHUnwindV3.cpp b/llvm/lib/Target/X86/X86WinEHUnwindV3.cpp index 4efedcd796f21..d11b540631c66 100644 --- a/llvm/lib/Target/X86/X86WinEHUnwindV3.cpp +++ b/llvm/lib/Target/X86/X86WinEHUnwindV3.cpp @@ -310,7 +310,8 @@ bool X86WinEHUnwindV3::runOnMachineFunction(MachineFunction &MF) { auto SplitAfter = [&](const EpilogSplitPoint &Epilog) { MachineBasicBlock *MBB = Epilog.BeginEpilog->getParent(); BuildMI(*MBB, MBB->begin(), Epilog.BeginEpilog->getDebugLoc(), - TII->get(X86::SEH_SplitChainedAtEndOfBlock)); + TII->get(X86::SEH_SplitChainedAtEndOfBlock)) + .setMIFlag(MachineInstr::FrameDestroy); SubFragmentSplits++; Changed = true; }; diff --git a/llvm/test/CodeGen/X86/taildup-callsiteinfo.mir b/llvm/test/CodeGen/X86/taildup-callsiteinfo.mir index 93991799aeb2a..8aa25324a8cb3 100644 --- a/llvm/test/CodeGen/X86/taildup-callsiteinfo.mir +++ b/llvm/test/CodeGen/X86/taildup-callsiteinfo.mir @@ -68,9 +68,9 @@ body: | liveins: $ecx CALL64pcrel32 @alloc, csr_win64, implicit $rsp, implicit $ssp, implicit $ecx, implicit-def $rsp, implicit-def $ssp, implicit-def dead $rax - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rsp = frame-destroy ADD64ri8 $rsp, 40, implicit-def dead $eflags - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue TAILJMPd64 @f2, csr_win64, implicit $rsp, implicit $ssp, implicit $rsp, implicit $ssp ... diff --git a/llvm/test/CodeGen/X86/win64-eh-empty-block-2.mir b/llvm/test/CodeGen/X86/win64-eh-empty-block-2.mir index b97bccd11705d..6efb7aa59ea86 100644 --- a/llvm/test/CodeGen/X86/win64-eh-empty-block-2.mir +++ b/llvm/test/CodeGen/X86/win64-eh-empty-block-2.mir @@ -170,10 +170,10 @@ body: | bb.8.return (machine-block-address-taken): $eax = MOV32rm $rbp, 1, $noreg, -12, $noreg :: (load (s32) from %stack.0) - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rsp = frame-destroy ADD64ri8 $rsp, 48, implicit-def dead $eflags $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 $eax bb.1.if.then: @@ -216,10 +216,10 @@ body: | frame-setup SEH_EndPrologue MOV32mi $rbp, 1, $noreg, -12, $noreg, 1 :: (store (s32) into %stack.0) $rax = LEA64r $rip, 0, $noreg, %bb.8, $noreg - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rsp = frame-destroy ADD64ri8 $rsp, 32, implicit-def dead $eflags $rbp = frame-destroy POP64r implicit-def $rsp, implicit $rsp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue CATCHRET %bb.8, %bb.0 ... diff --git a/llvm/test/CodeGen/X86/win64-eh-unwindv2-errors.mir b/llvm/test/CodeGen/X86/win64-eh-unwindv2-errors.mir index c8eee80bd7265..54fa4aaee1ca0 100644 --- a/llvm/test/CodeGen/X86/win64-eh-unwindv2-errors.mir +++ b/llvm/test/CodeGen/X86/win64-eh-unwindv2-errors.mir @@ -36,8 +36,8 @@ body: | $rsp = frame-setup SUB64ri32 $rsp, 40, implicit-def dead $eflags frame-setup SEH_StackAlloc 40 frame-setup SEH_EndPrologue - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 ... @@ -74,9 +74,9 @@ body: | frame-setup PUSH64r killed $rdi, implicit-def $rsp, implicit $rsp frame-setup SEH_PushReg 55 frame-setup SEH_EndPrologue - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rdi = frame-destroy POP64r implicit-def $rsp, implicit $rsp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... @@ -109,9 +109,9 @@ name: dealloc_no_alloc body: | bb.0.entry: frame-setup SEH_EndPrologue - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rsp = frame-destroy ADD64ri32 $rsp, 40, implicit-def dead $eflags - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... @@ -146,8 +146,8 @@ name: dealloc_after_epilog body: | bb.0.entry: frame-setup SEH_EndPrologue - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue $rsp = frame-destroy ADD64ri32 $rsp, 40, implicit-def dead $eflags RET64 ... @@ -185,10 +185,10 @@ body: | $rsp = frame-setup SUB64ri32 $rsp, 40, implicit-def dead $eflags frame-setup SEH_StackAlloc 40 frame-setup SEH_EndPrologue - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rdi = frame-destroy POP64r implicit-def $rsp, implicit $rsp $rsp = frame-destroy ADD64ri32 $rsp, 40, implicit-def dead $eflags - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... @@ -221,9 +221,9 @@ name: mov_no_setframe body: | bb.0.entry: frame-setup SEH_EndPrologue - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rsp = MOV64rr $rbp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... @@ -260,8 +260,8 @@ body: | $rbp = MOV64rr $rsp frame-setup SEH_SetFrame 52, 0 frame-setup SEH_EndPrologue - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue $rsp = MOV64rr $rbp RET64 ... @@ -299,10 +299,10 @@ body: | $rbp = MOV64rr $rsp frame-setup SEH_SetFrame 52, 0 frame-setup SEH_EndPrologue - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rdi = frame-destroy POP64r implicit-def $rsp, implicit $rsp $rsp = MOV64rr $rbp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... @@ -339,10 +339,10 @@ body: | $rsp = frame-setup SUB64ri32 $rsp, 40, implicit-def dead $eflags frame-setup SEH_StackAlloc 40 frame-setup SEH_EndPrologue - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rsp = frame-destroy ADD64ri32 $rsp, 40, implicit-def dead $eflags $rsp = MOV64rr $rbp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... @@ -377,10 +377,10 @@ body: | frame-setup PUSH64r killed $rdi, implicit-def $rsp, implicit $rsp frame-setup SEH_PushReg 55 frame-setup SEH_EndPrologue - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rdi = frame-destroy POP64r implicit-def $rsp, implicit $rsp $rsi = frame-destroy POP64r implicit-def $rsp, implicit $rsp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... @@ -417,10 +417,10 @@ body: | frame-setup PUSH64r killed $rsi, implicit-def $rsp, implicit $rsp frame-setup SEH_PushReg 60 frame-setup SEH_EndPrologue - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rdi = frame-destroy POP64r implicit-def $rsp, implicit $rsp $rsi = frame-destroy POP64r implicit-def $rsp, implicit $rsp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... @@ -453,8 +453,8 @@ name: pop_after_epilog body: | bb.0.entry: frame-setup SEH_EndPrologue - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue $rdi = frame-destroy POP64r implicit-def $rsp, implicit $rsp RET64 ... @@ -488,8 +488,8 @@ name: instr_after_epilog body: | bb.0.entry: frame-setup SEH_EndPrologue - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue $ecx = MOV32rr killed $eax RET64 ... @@ -527,10 +527,10 @@ body: | $rsp = frame-setup SUB64ri32 $rsp, 40, implicit-def dead $eflags frame-setup SEH_StackAlloc 40 frame-setup SEH_EndPrologue - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rsp = frame-destroy ADD64ri32 $rsp, 20, implicit-def dead $eflags $rdi = frame-destroy POP64r implicit-def $rsp, implicit $rsp $rsp = frame-destroy ADD64ri32 $rsp, 20, implicit-def dead $eflags - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... diff --git a/llvm/test/CodeGen/X86/win64-eh-unwindv2-push-pop-stack-alloc.mir b/llvm/test/CodeGen/X86/win64-eh-unwindv2-push-pop-stack-alloc.mir index 8207ba3d97bd6..cb30162b70d16 100644 --- a/llvm/test/CodeGen/X86/win64-eh-unwindv2-push-pop-stack-alloc.mir +++ b/llvm/test/CodeGen/X86/win64-eh-unwindv2-push-pop-stack-alloc.mir @@ -12,35 +12,35 @@ # CHECK-LABEL: name: push_pop_same # CHECK: body: # CHECK-NEXT: bb.0 -# CHECK-NEXT: SEH_UnwindVersion 2 +# CHECK-NEXT: frame-setup SEH_UnwindVersion 2 # CHECK-NEXT: frame-setup PUSH64r undef $rax # CHECK-NEXT: frame-setup SEH_StackAlloc 8 # CHECK-NEXT: frame-setup SEH_EndPrologue -# CHECK-NEXT: SEH_BeginEpilogue +# CHECK-NEXT: frame-destroy SEH_BeginEpilogue # CHECK-NEXT: $rax = frame-destroy -# CHECK-NEXT: SEH_UnwindV2Start -# CHECK-NEXT: SEH_EndEpilogue +# CHECK-NEXT: frame-destroy SEH_UnwindV2Start +# CHECK-NEXT: frame-destroy SEH_EndEpilogue # CHECK-NEXT: RET64 # Pushes and pops a different register. # CHECK-LABEL: name: push_pop_different # CHECK: body: # CHECK-NEXT: bb.0 -# CHECK-NEXT: SEH_UnwindVersion 2 +# CHECK-NEXT: frame-setup SEH_UnwindVersion 2 # CHECK-NEXT: frame-setup PUSH64r undef $rax # CHECK-NEXT: frame-setup SEH_StackAlloc 8 # CHECK-NEXT: frame-setup SEH_EndPrologue -# CHECK: SEH_BeginEpilogue +# CHECK: frame-destroy SEH_BeginEpilogue # CHECK-NEXT: $rcx = frame-destroy POP64r -# CHECK-NEXT: SEH_UnwindV2Start -# CHECK-NEXT: SEH_EndEpilogue +# CHECK-NEXT: frame-destroy SEH_UnwindV2Start +# CHECK-NEXT: frame-destroy SEH_EndEpilogue # CHECK-NEXT: RET64 $eax # Pushes in the prolog, adds in the epilog. # CHECK-LABEL: name: push_add # CHECK: body: # CHECK-NEXT: bb.0 -# CHECK-NEXT: SEH_UnwindVersion 2 +# CHECK-NEXT: frame-setup SEH_UnwindVersion 2 # CHECK-NEXT: frame-setup PUSH64r killed $r15 # CHECK-NEXT: frame-setup SEH_PushReg 126 # CHECK-NEXT: frame-setup PUSH64r killed $r14 @@ -54,15 +54,15 @@ # CHECK-NEXT: frame-setup PUSH64r undef $rax # CHECK-NEXT: frame-setup SEH_StackAlloc 8 # CHECK-NEXT: frame-setup SEH_EndPrologue -# CHECK: SEH_BeginEpilogue +# CHECK: frame-destroy SEH_BeginEpilogue # CHECK-NEXT: $rsp = frame-destroy ADD64ri32 $rsp, 8 -# CHECK-NEXT: SEH_UnwindV2Start +# CHECK-NEXT: frame-destroy SEH_UnwindV2Start # CHECK-NEXT: $rbx = frame-destroy POP64r # CHECK-NEXT: $rdi = frame-destroy POP64r # CHECK-NEXT: $rsi = frame-destroy POP64r # CHECK-NEXT: $r14 = frame-destroy POP64r # CHECK-NEXT: $r15 = frame-destroy POP64r -# CHECK-NEXT: SEH_EndEpilogue +# CHECK-NEXT: frame-destroy SEH_EndEpilogue # CHECK-NEXT: RET64 --- | @@ -97,9 +97,9 @@ body: | frame-setup PUSH64r undef $rax, implicit-def $rsp, implicit $rsp frame-setup SEH_StackAlloc 8 frame-setup SEH_EndPrologue - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rax = frame-destroy POP64r implicit-def $rsp, implicit $rsp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... --- @@ -112,9 +112,9 @@ body: | renamable $edx = KILL $edx, implicit-def $rdx renamable $ecx = KILL $ecx, implicit-def $rcx renamable $eax = LEA64_32r killed renamable $rcx, 1, killed renamable $rdx, 0, $noreg - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rcx = frame-destroy POP64r implicit-def $rsp, implicit $rsp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 $eax ... --- @@ -189,13 +189,13 @@ body: | MOV64mr renamable $r8, 1, $noreg, 8, $noreg, killed renamable $r9 :: (store (s64) into %ir.out + 8, basealign 16) MOV64mr renamable $r8, 1, $noreg, 16, $noreg, killed renamable $rax :: (store (s64) into %ir.out + 16, align 16) MOV64mr killed renamable $r8, 1, $noreg, 24, $noreg, killed renamable $rdx :: (store (s64) into %ir.out + 24, basealign 16) - SEH_BeginEpilogue + frame-destroy SEH_BeginEpilogue $rsp = frame-destroy ADD64ri32 $rsp, 8, implicit-def dead $eflags $rbx = frame-destroy POP64r implicit-def $rsp, implicit $rsp $rdi = frame-destroy POP64r implicit-def $rsp, implicit $rsp $rsi = frame-destroy POP64r implicit-def $rsp, implicit $rsp $r14 = frame-destroy POP64r implicit-def $rsp, implicit $rsp $r15 = frame-destroy POP64r implicit-def $rsp, implicit $rsp - SEH_EndEpilogue + frame-destroy SEH_EndEpilogue RET64 ... diff --git a/llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-epilogs.mir b/llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-epilogs.mir index 8edc43c83f195..6488f34c0512b 100644 --- a/llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-epilogs.mir +++ b/llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-epilogs.mir @@ -17,12 +17,14 @@ # RUN: -check-prefixes=ALLOWMORE,CHECK # CHECK-LABEL: too_many_epilogs -# CHECK: SEH_UnwindVersion 2 -# CHECK: SEH_UnwindV2Start +# CHECK: frame-setup SEH_UnwindVersion 2 +# CHECK: frame-destroy SEH_BeginEpilogue +# CHECK-NEXT: frame-destroy SEH_UnwindV2Start +# CHECK-NEXT: frame-destroy SEH_EndEpilogue # If we restricted the number of unwind codes, then we expect to use chained # infos. -# ALLOWLESS: SEH_SplitChainedAtEndOfBlock +# ALLOWLESS: frame-destroy SEH_SplitChainedAtEndOfBlock # ALLOWMORE-NOT: SEH_SplitChainedAtEndOfBlock --- | @@ -52,40 +54,40 @@ name: too_many_epilogs body: | bb.0.entry: frame-setup SEH_EndPrologue - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !10 bb.1: - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !11 bb.2: - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !11 bb.3: - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !11 bb.4: - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !11 bb.5: - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !11 bb.6: - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !11 bb.7: - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !11 bb.8: - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !11 ... diff --git a/llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-instr.mir b/llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-instr.mir index 44d89356ecae7..ea31e65494ea7 100644 --- a/llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-instr.mir +++ b/llvm/test/CodeGen/X86/win64-eh-unwindv2-too-many-instr.mir @@ -45,25 +45,25 @@ name: too_many_instr body: | bb.0.entry: frame-setup SEH_EndPrologue - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !10 bb.1: $rcx = MOV64rr $rax - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !11 bb.2: $rcx = MOV64rr $rax - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !12 bb.3: $rcx = MOV64rr $rax $rcx = MOV64rr $rax $rcx = MOV64rr $rax - SEH_BeginEpilogue - SEH_EndEpilogue + frame-destroy SEH_BeginEpilogue + frame-destroy SEH_EndEpilogue RET64 debug-location !13 ... @@ -71,26 +71,34 @@ body: | # CHECK-LABEL: too_many_instr # CHECK-LABEL: bb.0.entry: # bb.1 + bb.2 have enough instructions that bb.0 has its own info. -# ALLOWLESS: SEH_SplitChainedAtEndOfBlock +# ALLOWLESS: frame-destroy SEH_SplitChainedAtEndOfBlock # ALLOWMORE-NOT: SEH_SplitChainedAtEndOfBlock -# CHECK: SEH_UnwindV2Start -# CHECK: RET64 debug-location !10 +# CHECK: frame-destroy SEH_BeginEpilogue +# CHECK-NEXT: frame-destroy SEH_UnwindV2Start +# CHECK-NEXT: frame-destroy SEH_EndEpilogue +# CHECK-NEXT: RET64 debug-location !10 # CHECK-LABEL: bb.1 # bb.2 doesn't fill the current info, so bb.1 gets added as well. # CHECK-NOT: SEH_SplitChainedAtEndOfBlock -# CHECK: SEH_UnwindV2Start -# CHECK: RET64 debug-location !DILocation(line: 3, column: 1, scope: !6) +# CHECK: frame-destroy SEH_BeginE... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/228924 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
