This is an archive of the discontinued LLVM Phabricator instance.

[AArch64] Async unwind - Always place the first LDP at the end when ReverseCSRRestoreSeq is true
ClosedPublic

Authored by chill on Oct 22 2021, 9:21 AM.

Details

Summary

This patch is in preparation for the async unwind CFI.

Put the first LDP the end, so that the load-store optimizer can run
and merge the LDP and the ADD into a post-index LDP.

Do this always and as early as at the time of the initial creation of
the CSR restore instructions, even if that LDP is not guaranteed to
be mergeable with a subsequent SP increment.

This greatly simplifies the CFI generation for prologue, as otherwise
we have to take extra steps to ensure reordering does not cross CFI
instructions.

Diff Detail

Event Timeline

chill created this revision.Oct 22 2021, 9:21 AM
chill requested review of this revision.Oct 22 2021, 9:21 AM
Herald added a project: Restricted Project. · View Herald TranscriptOct 22 2021, 9:21 AM
chill planned changes to this revision.Oct 22 2021, 9:26 AM
chill retitled this revision from [AArch64] Async unwind - Always place the first LDP at the end when ReverseCSRRestoreSeq is true to [AArch64] Async unwind (3/6) - Always place the first LDP at the end when ReverseCSRRestoreSeq is true .
chill updated this revision to Diff 389534.Nov 24 2021, 10:21 AM
chill retitled this revision from [AArch64] Async unwind (3/6) - Always place the first LDP at the end when ReverseCSRRestoreSeq is true to [AArch64] Async unwind - Always place the first LDP at the end when ReverseCSRRestoreSeq is true .
chill updated this revision to Diff 392375.Dec 7 2021, 6:05 AM
chill updated this revision to Diff 399012.Jan 11 2022, 10:37 AM
This revision is now accepted and ready to land.Feb 4 2022, 3:16 AM
chill updated this revision to Diff 408875.Feb 15 2022, 7:51 AM
This revision was landed with ongoing or failed builds.Feb 24 2022, 10:57 AM
This revision was automatically updated to reflect the committed changes.