cant_combine_insn_p hard_reg->reg moves
David Edelsohn
dje@watson.ibm.com
Tue Dec 25 23:13:00 GMT 2001
At Daniel's prompting, I finally tracked down the cause of the
code pessimization with respect to function arguments and return values.
Daniel tracked it down to somewhere in combine.
The problem is cant_combine_insn_p disallowing hard registers.
Arguments and return values are specified as hard regs. So this change
from December 2000 now often inserts a move between the hard reg allocated
to the pseudo of a computation and the hard regs of arguments and return
values. This is rather pessimistic for some architecture, especially for
ABIs with register-based calling conventions.
How can this improved? Could cant_combine_insn_p test for hard
regs with either REG_EQUIV involving computations of ARG_POINTER_REGNUM or
FUNCTION_VALUE_REGNO_P?
Thanks, David
More information about the Gcc
mailing list