https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112380
Roger Sayle <roger at nextmovesoftware dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |roger at nextmovesoftware dot com Status|NEW |ASSIGNED --- Comment #10 from Roger Sayle <roger at nextmovesoftware dot com> --- combine.cc's expand_field_assignment needs to defend against gen_lowpart (which is gen_lowpart_for_combine) returning a CLOBBER. Otherwise, we end up calling simplify_set on: (set (reg:DI 134) (and:DI (subreg:DI (ior:SI (ior:SI (and:SI (subreg:SI (reg/v:TI 114 [ sampler ]) 0) (const_int -129280 [0xfffffffffffe0700])) (and:SI (clobber:TI (const_int 0 [0])) (const_int -129025 [0xfffffffffffe07ff]))) (and:SI (reg:SI 130) (const_int 129024 [0x1f800]))) 0) (const_int 4294967295 [0xffffffff]))) where if you look closely the "(clobber:TI (const_int 0))" causes no end of fun in simplify_rtx; it's not surprising that an assert is eventually triggered in simplify_subreg. I'm testing a patch.