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


Reply via email to