[Bug rtl-optimization/101200] Unneeded AND after shift

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jun 24 20:37:38 GMT 2021


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101200

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|tree-optimization           |rtl-optimization
           Keywords|                            |missed-optimization
           Severity|normal                      |enhancement

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
This does not make sense:
Trying 12 -> 14:
   12: {r93:QI=r82:QI 0>>0x4;clobber flags:CC;}
      REG_DEAD r82:QI
      REG_UNUSED flags:CC
   14: {r95:DI=r93:QI#0&0xf;clobber flags:CC;}
      REG_UNUSED flags:CC
      REG_DEAD r93:QI
Failed to match this instruction:
(parallel [
        (set (reg:DI 95 [ a ])
            (zero_extract:DI (subreg:HI (reg:QI 82 [ d.0_1 ]) 0)
                (const_int 4 [0x4])
                (const_int 4 [0x4])))
        (clobber (reg:CC 17 flags))
    ])

How can you have a subreg of HI and then get a zero_extract of DI?


More information about the Gcc-bugs mailing list