callee-save for register aliases

We have vector registers and scalar registers that alias their low bits. That is

def ScalarSRI : SubRegIndex<32>

def Scalar : Register

def Vector<n, s> : Register { let SubRegs = [s]; let SubRegIndices = ScalarSRI; }

If a function only defs the scalar part of a callee-saved vector register, the other bits are not affected and it would be desirable not to save and restore them. But determineCalleeSaves() uses isPhysRegModified(), which returns true if that register or any of its aliases are defed.

Is there a way around this?

-Alan