rnreg and vliw

shmeel gutl shmeelgutl@shmuelhome.mine.nu
Fri Jan 23 09:00:00 GMT 2015


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




More information about the Gcc mailing list