On 06/16/2015 07:05 PM, Steve Ellcey wrote:
I have a question about the DRAP register (used for dynamic stack alignment) and about reserving/using hard registers in general. I am trying to understand where, if a drap register is allocated, GCC is told not to use it during general register allocation. There must be some code somewhere for this but I cannot find it.
There isn't. Because the vDRAP register is a pseudo. The DRAP register is only live from somewhere in the middle of the prologue to the end of the prologue.
See ix86_get_drap_rtx, wherein we coordinate with the to-be-generated prologue (crtl->drap_reg), allocate the pseudo, and emit the hard-reg-to-pseudo copy at entry_of_function.
r~