https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110165
Bug ID: 110165 Summary: [13/14 Regression] wrong code with signed 1 bit integers sometimes since r13-4459-g6508d5e5a1a8 Product: gcc Version: 13.1.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: tree-optimization Assignee: pinskia at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Full testcase: ```` struct s { int t : 1; }; [[gnu::noipa]] int f(struct s t, int a, int b) { int bd = t.t; if (bd) a|=b; return a; } int main(void) { struct s t; for(int i = 0;i <= 1; i++) { int a = 0x10; int b = 0x0f; int c = a | b; int r = f((struct s){i}, a, b); int exp = i == 1 ? a | b : a; if (exp != r) __builtin_abort(); } } ``` Found while improving these match patterns.