This is for bug 37573. It isn't safe to outline sequences of instructions where x16/x17/nzcv live across the sequence.
This teaches the outliner to check whether or not a specific canidate has x16/x17/nzcv live across it and discard the candidate in the case that that is true.
This is still not right; it's computing the values which are live at the beginning of the block, not the beginning of the outlined sequence.
You need to start at MBB->rbegin() (the end of the block), and end at ++(MachineBasicBlock::reverse_iterator)front() (the beginning of the outlined sequence).
Alternatively, I guess you could conservatively use LiveRegUnits::accumulate.