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.