diff options
author | Eli Friedman <efriedma@quicinc.com> | 2022-11-30 13:47:35 -0800 |
---|---|---|
committer | Eli Friedman <efriedma@quicinc.com> | 2022-11-30 13:47:35 -0800 |
commit | d98f74a470d6b1bf57f3ad4e8e2c1a18ddfed491 (patch) | |
tree | 8bdc56fa0c5aa3a430f123154344fd0b78c0bea6 /llvm/lib/MC/MCWin64EH.cpp | |
parent | 2fbcf8b9b38c84fd1c3a250b4ef76f7e7adad0d3 (diff) | |
download | llvm-d98f74a470d6b1bf57f3ad4e8e2c1a18ddfed491.zip llvm-d98f74a470d6b1bf57f3ad4e8e2c1a18ddfed491.tar.gz llvm-d98f74a470d6b1bf57f3ad4e8e2c1a18ddfed491.tar.bz2 |
[AArch64] Make sure we don't emit packed unwind for .seh_save_any_reg_p
Obvious oversight in implementation in D135417.
Differential Revision: https://reviews.llvm.org/D138955
Diffstat (limited to 'llvm/lib/MC/MCWin64EH.cpp')
-rw-r--r-- | llvm/lib/MC/MCWin64EH.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/llvm/lib/MC/MCWin64EH.cpp b/llvm/lib/MC/MCWin64EH.cpp index e4476c2..9972270 100644 --- a/llvm/lib/MC/MCWin64EH.cpp +++ b/llvm/lib/MC/MCWin64EH.cpp @@ -984,6 +984,21 @@ static bool tryARM64PackedUnwind(WinEH::FrameInfo *info, uint32_t FuncLength, return false; Location = End; break; + case Win64EH::UOP_SaveAnyRegI: + case Win64EH::UOP_SaveAnyRegIP: + case Win64EH::UOP_SaveAnyRegD: + case Win64EH::UOP_SaveAnyRegDP: + case Win64EH::UOP_SaveAnyRegQ: + case Win64EH::UOP_SaveAnyRegQP: + case Win64EH::UOP_SaveAnyRegIX: + case Win64EH::UOP_SaveAnyRegIPX: + case Win64EH::UOP_SaveAnyRegDX: + case Win64EH::UOP_SaveAnyRegDPX: + case Win64EH::UOP_SaveAnyRegQX: + case Win64EH::UOP_SaveAnyRegQPX: + // These are never canonical; they don't show up with the usual Arm64 + // calling convention. + return false; } } if (RegI > 10 || RegF > 8) |