diff options
author | Florian Hahn <flo@fhahn.com> | 2020-12-11 19:37:14 +0000 |
---|---|---|
committer | Florian Hahn <flo@fhahn.com> | 2020-12-11 19:45:44 +0000 |
commit | a87fccb3ff9c11986d3110d9f77fb0ccea0daf79 (patch) | |
tree | 61f5c19ba6060e91171d2b8bf6279cac8313d50a /llvm/lib/CodeGen/SafeStack.cpp | |
parent | 32910f780df4f5add290f176459648f2326674f5 (diff) | |
download | llvm-a87fccb3ff9c11986d3110d9f77fb0ccea0daf79.zip llvm-a87fccb3ff9c11986d3110d9f77fb0ccea0daf79.tar.gz llvm-a87fccb3ff9c11986d3110d9f77fb0ccea0daf79.tar.bz2 |
[AArch64] Lower calls with rv_marker attribute .
This patch adds support for lowering function calls with the
rv_marker attribute. The goal is to expand such calls to the
following sequence of instructions:
BL @fn
mov x29, x29
This sequence of instructions triggers Objective-C runtime optimizations,
hence we want to ensure no instructions get moved in between them.
This patch achieves that by adding a new CALL_RVMARKER ISD node,
which gets turned into the BLR_RVMARKER pseudo, which eventually gets
expanded into the sequence mentioned above. The sequence is then marked
as instruction bundle, to avoid anything being moved in between.
@ahatanak is working on using this attribute in the front- & middle-end.
Together with the front- & middle-end changes, this should address
PR31925 for AArch64.
Reviewed By: t.p.northover
Differential Revision: https://reviews.llvm.org/D92569
Diffstat (limited to 'llvm/lib/CodeGen/SafeStack.cpp')
0 files changed, 0 insertions, 0 deletions