[AArch64] Make opcode switch in tryARM64PackedUnwind comprehensive.

I don't think compiler-generated code could actually be affected by
this, but better to be thorough.

Differential Revision: https://reviews.llvm.org/D139048
This commit is contained in:
Eli Friedman 2022-12-01 12:06:31 -08:00
parent dd8d0d21ce
commit e65c5eebb8
1 changed files with 17 additions and 0 deletions

View File

@ -999,6 +999,23 @@ static bool tryARM64PackedUnwind(WinEH::FrameInfo *info, uint32_t FuncLength,
// These are never canonical; they don't show up with the usual Arm64
// calling convention.
return false;
case Win64EH::UOP_AllocLarge:
// Allocations this large can't be represented in packed unwind (and
// usually don't fit the canonical form anyway because we need to use
// __chkstk to allocate the stack space).
return false;
case Win64EH::UOP_AddFP:
// "add x29, sp, #N" doesn't show up in the canonical pattern (except for
// N=0, which is UOP_SetFP).
return false;
case Win64EH::UOP_TrapFrame:
case Win64EH::UOP_Context:
case Win64EH::UOP_ClearUnwoundToCall:
case Win64EH::UOP_PushMachFrame:
// These are special opcodes that aren't normally generated.
return false;
default:
report_fatal_error("Unknown Arm64 unwind opcode");
}
}
if (RegI > 10 || RegF > 8)