https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106101
--- Comment #13 from Segher Boessenkool <segher at gcc dot gnu.org> --- (Sorry I missed this) (In reply to Andreas Krebbel from comment #11) > I've tried to change our movstrict backend patterns to use a predicate on > the dest operand which enforces a subreg. However, since reload strips the > subreg away when assigning hard regs we end up with a STRICT_LOW_PART of a > reg again. At least after reload something like this should be acceptable - > right? > > 298r.ira: > (insn 8 16 17 3 (set (strict_low_part (subreg:SI (reg/v:DI 64 [ e ]) 4)) > (const_int 0 [0])) "t.cc":37:17 1485 {movstrictsi} > (nil)) > > 299r.reload: > (insn 8 16 17 3 (set (strict_low_part (reg:SI 11 %r11 [orig:64 e+4 ] [64])) > (mem/u/c:SI (symbol_ref/u:DI ("*.LC0") [flags 0x2]) [0 S4 A32])) > "t.cc":37:17 1485 {movstrictsi} > (nil)) So you are suggesting that every strict_low_part after reload can just be removed? If that is true, should we not just do exactly that then?