This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Dale Johannesen wrote :It is.
On Wednesday, April 30, 2003, at 12:31 PM, Herman ten Brugge wrote:
Hello,
I found a problem with the -fnew-ra option of the compiler. I analysed
the problem and found that the macro HARD_REGNO_CALL_PART_CLOBBERED
is not used by the new register allocator.
I think this is also a bit difficult to implement because we now
have to check the mode for every register that is used during a
CALL_INSN.
You can try the following (mail may have screwed up spacing). It may result in even worse code than your patch, but maybe it's better than trying to work around this new-ra problem in individual targets. (Untested, I do not have a c4x.)
I do not think the problem is in df.c.
Right, and HARD_REGNO_CALL_PART_CLOBBERED says that hard regs are clobbered.The code in df.c walks through the rtl and sets clobbered/used register info.
We do not yet know what modeThis has nothnig to do with anything.
the hard registers will get (reg_raw_mode can not be used here). The mode
is assigned in the new-ra pass.
This is wrong.We run df.c when no hard registers are set yet, only pseudo registers are set.
Because they don't use df.c for register info, like new-ra does.HARD_REGNO_CALL_PART_CLOBBERED works only on hard registers, so how should this work? See how HARD_REGNO_CALL_PART_CLOBBERED is used in local_alloc.c and global.c.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |