This is an archive of the discontinued LLVM Phabricator instance.

[AArch64] [Windows] SEH opcodes should be scheduling boundaries.
ClosedPublic

Authored by efriedma on Oct 29 2018, 5:39 PM.

Details

Summary

Prevents the post-RA scheduler from modifying the prologue sequences emitting by frame lowering. This is roughly similar to what we do for other targets: TargetInstrInfo::isSchedulingBoundary checks isPosition(), which checks for CFI_INSTRUCTION.

isSEHInstruction is taken from D50288; it'll land with whatever patch lands first.

Diff Detail

Repository
rL LLVM

Event Timeline

efriedma created this revision.Oct 29 2018, 5:39 PM
rnk accepted this revision.Oct 29 2018, 5:44 PM

From reading the docs for isSchedulingBoundary, yes, definitely:

/// isSchedulingBoundary - Test if the given instruction should be
/// considered a scheduling boundary. This primarily includes labels
/// and terminators.

Fundamentally, SEH instructions are labels for unwind info.

This revision is now accepted and ready to land.Oct 29 2018, 5:44 PM
This revision was automatically updated to reflect the committed changes.