This is an alternative patch for D29492, the bug was originally reported in https://bugs.llvm.org/show_bug.cgi?id=30911.
The issue arises when multiple CALLSEQ_BEGIN nodes are unscheduled as the last node to be unscheduled will gain access to the CallResource register. But when a node is being picked, only CALLSEQ_END nodes are checked against the CallResource and have their chains evaluated. This then means that other CALLSEQ_BEGIN nodes can be scheduled before the existing call sequence has been finalised. This patch adds a check against the FrameSetup nodes in DelayForLiveRegs to prevent this from happening.
There seems to be something wrong with the opening braces here. I had to fix them before this compiled.