[Bug target/83831] New: [6/7/8 Regression][RX] Unused bclr,bnot,bset insns

olegendo at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Jan 14 08:57:00 GMT 2018


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

            Bug ID: 83831
           Summary: [6/7/8 Regression][RX] Unused bclr,bnot,bset insns
           Product: gcc
           Version: 6.4.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: olegendo at gcc dot gnu.org
  Target Milestone: ---
            Target: rx*-*-*

These cases should be emitting the bclr, bnot, bset instructions.  They are
present in rx.md but I guess the combine pass does not catch them because of
some reasons.  I assume these patterns used to work at some point in time, so
this must be some kind of regression.  It's not working on the latest supported
branch (GCC 6) and trunk (GCC 8).


void expect_blcr (char* x)
{
  x[0] &= 0b1111'1110;
  x[1] &= 0b1111'1110;
  x[2] &= 0b1111'1110;
  x[65000] &= 0b1111'1110;
}


void expect_bnot (char* x)
{
  x[0] ^= 0b0001'0000;
  x[1] ^= 0b0001'0000;
  x[2] ^= 0b0001'0000;
  x[65000] ^= 0b0001'0000;
}


void expect_bset (char* x)
{
  x[0] |= 0b0001'0000;
  x[1] |= 0b0001'0000;
  x[2] |= 0b0001'0000;
  x[65000] |= 0b0001'0000;
}


More information about the Gcc-bugs mailing list