First thanks very much for your thoughts


If those two instructions appear for the first time in the .greg dump
file, then they have been created by reload.

Yes they appear for the first time in .greg dump file.


> 1. What could be the reason for this behavior?

I'm really shooting in the dark here, but my guess is that you have a
define_expand for movdi that is not reload safe.  You can do this
operation correctly, you just have to reverse the instructions: load
a5 from (a4 + 4) before you load a4 from (a4).  See, e.g.,
mips_split_64bit_move in mips.c and note the use of
reg_overlap_mentioned_p.

I have already mentioned earlier in this conversation that adddi3 and
subdi3 are the only DI mode patterns in the  .md file. Then Rask
pointed out that middile end will synthesize other patterns for DI
mode looking at similar SI mode patters in the backend.

As this is the case am i to assume that the synthesized movdi pattern
is not safe for reload? Should i tweak the movsi pattern to to correct
this issue or should i write a explicit movdi pattern ?

With this in mind how come this worked fine in gcc 3.4.6 port of the
target. Has the behavior of reload changed very much in gcc 4.1.1?

Regards,
Shafi

Reply via email to