https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102570
Bug ID: 102570 Summary: missed fully redudant with internal function of add_overflow in FRE Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: missed-optimization Severity: enhancement Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Take: bool f1(unsigned x, unsigned y, unsigned *res) { bool t = __builtin_add_overflow(x, y, res); unsigned res1; bool t1 = __builtin_add_overflow(x, y, &res1); *res -= res1; return t==t1; } This should be optimized at fre1 but currently takes into DOM to optimize it to just *res = 0; return 1; FRE does not handle some of the internal functions. Note this is different from PR 102569 but related.