[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