------- Comment #11 from ubizjak at gmail dot com 2008-09-06 15:57 ------- (In reply to comment #9) > I am concerned about those "*Yi"/"*Ym" and "r" pairs:
> IRA is much more sensitive to "*" constraint. We can ignore "*Ym"/"r" pairs. > But should we remove * from "*Yi"/"r" pairs? This approach was used to keep register allocator away from moving value from integer ("r") register to non-integer register that can otherwise hold SImode or DImode value. This happened when there was a shortage of "r" registers. This delicate balance was achieved by using "?" and "*" for MMX and SSE registers in various move patterns. I'm afraid that removing these decorations could (in the worst case) lead to MMX instructions that lock out x87 registers. IMO, running a simple regmove pass avoids this situation, since this pass will just connect two already used registers together. Due to "*" decoration, allocator won't allocate the register in the move pattern, no matter how hard the register pressure is. So, due to this, I vote to bring back regmove pass to fix this issue independently of RA. Maybe this pass can even be enhanced a bit to fix PR 19389? -- ubizjak at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2008-09-06 15:57:14 date| | Summary|[4.4 Regression] IRA |[4.4 Regression] IRA |generates inefficient code |generates inefficient code | |due to missing regmove pass http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37364