Question about MachineLocation

Hello,

My current understanding of the implementation of class MachineLocation is that it describes how an argument being passed to a function is represented - it is available either in a register or in a stack frame (computed using SP and offset), and depending upon it IsRegister is either set to true or false. However, I doubt my understanding here. Can someone please clarify what exactly the MachineLocation represents?