aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/CodeGenPrepare.cpp
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2020-09-07 14:45:37 +0300
committerMartin Storsjö <martin@martin.st>2020-09-11 10:31:04 +0300
commit700fbe591ac0f29c76e9f2bd77d752d4bd56d274 (patch)
tree5e1a311dd4d3bef4eb6f4894f82e606f523a8e95 /llvm/lib/CodeGen/CodeGenPrepare.cpp
parent46416f08031f6fcaccd9f51430f7a71c5f510495 (diff)
downloadllvm-700fbe591ac0f29c76e9f2bd77d752d4bd56d274.zip
llvm-700fbe591ac0f29c76e9f2bd77d752d4bd56d274.tar.gz
llvm-700fbe591ac0f29c76e9f2bd77d752d4bd56d274.tar.bz2
[MC] [Win64EH] Canonicalize ARM64 unwind opcodes
Convert 2-byte opcodes to equivalent 1-byte ones. Adjust the existing exhaustive testcase to avoid being altered by the simplification rules (to keep that test exercising all individual opcodes). Fix the assembler parser limits for register pairs; for .seh_save_regp and .seh_save_regp_x, we can allow up to x29, for a x29+x30 pair (which gets remapped to the UOP_SaveFPLR(X) opcodes), for .seh_save_fregp and .seh_save_fregpx, allow up to d14+d15. Not creating .seh_save_next for float register pairs, as the actual unwinder implementation in current versions of Windows is buggy for that case. This gives a minimal but measurable size reduction. (For a 6.5 MB DLL with 300 KB .xdata, the .xdata shrinks by 48 bytes. The opcode sequences are padded to a 4 byte boundary, so very small improvements might not end up mattering directly.) Differential Revision: https://reviews.llvm.org/D87367
Diffstat (limited to 'llvm/lib/CodeGen/CodeGenPrepare.cpp')
0 files changed, 0 insertions, 0 deletions