[Bug target/48678] [4.6/4.7 Regression] unable to find a register to spill in class ‘GENERAL_REGS’

ubizjak at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Apr 19 08:34:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48678

--- Comment #3 from Uros Bizjak <ubizjak at gmail dot com> 2011-04-19 08:33:49 UTC ---
(In reply to comment #2)
> Having (strict_low_part (subreg:HI (reg:V2DI ...) 0)) on the LHS doesn't sound
> like a good idea to me (and this is created already during expansion).  Maybe
> reload should be supposed to handle that (it could copy the V2DI reg into a
> general reg, then do the movstrict on the general reg and then copy it back),
> but IMHO it is never going to lead to efficient code.  The following patch
> fixes the ICE for me, but dunno if that is how we want to fix it.
> Before the r161655 change arbitrary VCEs (in form of MEM_EXPR) weren't allowed
> on the LHS, so this wasn't a problem.

We can perhaps implement S_L_P inserts with pinsr instructions (pinsrw in this
case). Since SSE2 implements only pinsrw (other widths are implemented in
SSE4_1) this would slightly complicate movstrict expander, but IMO, it is worth
a try.



More information about the Gcc-bugs mailing list