https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111542
Bug ID: 111542 Summary: [11/12/13/14 Regression] Product: gcc Version: 14.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Take: ``` _Bool f(int x,int y) { _Bool a = x == 0; _Bool b = y == 0; _Bool t = a & b; return t & !a; } ``` This used to optimize to 0 in GCC 6 but starting with GCC 7, we get: ``` _5 = x_2(D) | y_3(D); _6 = _5 == 0; _1 = x_2(D) != 0; _7 = _1 & _6; ```