For historical reasons, the R6 register is a callee saved argument register. This means that if it is used to pass an argument to a function that does not clobber it, it is live throughout the function.
This patch makes sure that in this special case any kill flags of it are removed, all MBBs have it in their live-in lists and all return instructions use it.
Not sure I understand what the LowGPR && SystemZMC::getFirstReg(LowGPR) > SystemZMC::getFirstReg(SystemZ::R6D) is doing. We should be checking whether the register was spilled in the prologue.