Skip to content

Commit 3437c7f

Browse files
committed
[WinEH] Fix the wrong alignment orientation during calculating EH frame.
Summary: This is a bug fix for further issues in PR43585. Reviewers: rnk, RKSimon, craig.topper, andrew.w.kaylor Subscribers: hiraditya, llvm-commits, annita.zhang Tags: #llvm Differential Revision: https://reviews.llvm.org/D70224 (cherry picked from commit 8723b95)
1 parent 8af4ee9 commit 3437c7f

File tree

2 files changed

+10
-10
lines changed

2 files changed

+10
-10
lines changed

llvm/lib/Target/X86/X86FrameLowering.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1869,7 +1869,7 @@ int X86FrameLowering::getWin64EHFrameIndexRef(const MachineFunction &MF,
18691869
return getFrameIndexReference(MF, FI, FrameReg);
18701870

18711871
FrameReg = TRI->getStackRegister();
1872-
return alignTo(MFI.getMaxCallFrameSize(), getStackAlignment()) + it->second;
1872+
return alignDown(MFI.getMaxCallFrameSize(), getStackAlignment()) + it->second;
18731873
}
18741874

18751875
int X86FrameLowering::getFrameIndexReferenceSP(const MachineFunction &MF,

llvm/test/CodeGen/X86/win64-funclet-savexmm.ll

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,17 +85,17 @@ try.cont: ; preds = %catchret.dest, %inv
8585
; CHECK: subq $88, %rsp
8686
; CHECK: .seh_stackalloc 88
8787
; CHECK: leaq 112(%rdx), %rbp
88-
; CHECK: vmovaps %xmm8, 48(%rsp)
89-
; CHECK: .seh_savexmm 8, 48
90-
; CHECK: vmovaps %xmm7, 64(%rsp)
91-
; CHECK: .seh_savexmm 7, 64
92-
; CHECK: vmovaps %xmm6, 80(%rsp)
93-
; CHECK: .seh_savexmm 6, 80
88+
; CHECK: vmovaps %xmm8, 32(%rsp)
89+
; CHECK: .seh_savexmm 8, 32
90+
; CHECK: vmovaps %xmm7, 48(%rsp)
91+
; CHECK: .seh_savexmm 7, 48
92+
; CHECK: vmovaps %xmm6, 64(%rsp)
93+
; CHECK: .seh_savexmm 6, 64
9494
; CHECK: .seh_endprologue
9595
; CHECK: movl -{{[0-9]+}}(%rbp), %ecx
96-
; CHECK: vmovaps 80(%rsp), %xmm6
97-
; CHECK: vmovaps 64(%rsp), %xmm7
98-
; CHECK: vmovaps 48(%rsp), %xmm8
96+
; CHECK: vmovaps 64(%rsp), %xmm6
97+
; CHECK: vmovaps 48(%rsp), %xmm7
98+
; CHECK: vmovaps 32(%rsp), %xmm8
9999
; CHECK: leaq .LBB0_1(%rip), %rax
100100
; CHECK: addq $88, %rsp
101101
; CHECK: popq %rbx

0 commit comments

Comments
 (0)