aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/MC/MCWin64EH.cpp
diff options
context:
space:
mode:
authorEli Friedman <efriedma@quicinc.com>2022-11-30 13:47:35 -0800
committerEli Friedman <efriedma@quicinc.com>2022-11-30 13:47:35 -0800
commitd98f74a470d6b1bf57f3ad4e8e2c1a18ddfed491 (patch)
tree8bdc56fa0c5aa3a430f123154344fd0b78c0bea6 /llvm/lib/MC/MCWin64EH.cpp
parent2fbcf8b9b38c84fd1c3a250b4ef76f7e7adad0d3 (diff)
downloadllvm-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.cpp15
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)