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; }