This is an archive of the discontinued LLVM Phabricator instance.

[AArch64] Don't form paired loads from epilogue operations on Windows
ClosedPublic

Authored by efriedma on Sep 30 2022, 2:37 PM.

Details

Summary

AArch64LoadStoreOptimizer has a bunch of different guards to avoid corrupting Windows SEH prologues/epilogues, but apparently we missed the case of merging two instructions where the first instruction isn't part of the epilogue, but the second instruction is.

Fixes issue discovered at https://reviews.llvm.org/D130049#3704064

Diff Detail

Event Timeline

efriedma created this revision.Sep 30 2022, 2:37 PM
Herald added a project: Restricted Project. · View Herald TranscriptSep 30 2022, 2:37 PM
efriedma requested review of this revision.Sep 30 2022, 2:37 PM
Herald added a project: Restricted Project. · View Herald TranscriptSep 30 2022, 2:37 PM
efriedma retitled this revision from [AArch64] Don't form paired loads from epilogue operations. to [AArch64] Don't form paired loads from epilogue operations on Windows.Sep 30 2022, 2:38 PM
mstorsjo accepted this revision.Oct 3 2022, 12:38 AM

LGTM, this does seem to resolve most issues for me.

I did some build testing with D131394, and did find a couple of more issues (less severe ones) that we still have to fix, before we can enable such checking to the same level of strictness as we have on ARM - I'll post patches (or spin off discussion) for those last bits when I have time to brush it up.

This revision is now accepted and ready to land.Oct 3 2022, 12:38 AM