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.

Reply via email to