It seems that in gcc 4.7, the rnreg pass for renaming registers after
reload is not vliw aware. In particular I saw it reassign a register
that is in use in the same vliw.
To be more concrete, I saw it change the following pseudo code
DI:a30 = v0
SI:a14 = -a14
to
DI:a30 = v0
SI:a31 = -a14
since a31 was never referenced again. This won't work inside a vliw
since it causes two instructions to set a31. Even though, rnreg runs
before sched2, it runs after software pipelining which creates its own
vliws.
Is there any easy fix for this.
Thanks,
Shmeel