[PATCH] D92569: [AArch64] Lower calls with rv_marker attribute .

Florian Hahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 3 04:19:14 PST 2020


fhahn created this revision.
fhahn added reviewers: efriedma, dmgreen, t.p.northover, paquette, ahatanak.
Herald added subscribers: danielkiss, hiraditya, kristof.beyls.
Herald added a project: LLVM.
fhahn requested review of this revision.

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.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D92569

Files:
  llvm/lib/Target/AArch64/AArch64ExpandPseudoInsts.cpp
  llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
  llvm/lib/Target/AArch64/AArch64ISelLowering.h
  llvm/lib/Target/AArch64/AArch64InstrInfo.td
  llvm/test/CodeGen/AArch64/call-rv-marker.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D92569.309224.patch
Type: text/x-patch
Size: 9796 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201203/d937dbe4/attachment.bin>


More information about the llvm-commits mailing list