https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119509
--- Comment #4 from Nick Hudson <skrll at netbsd dot org> --- (In reply to Andrew Pinski from comment #2) > _5 = val_2(D) & 0xffff00; > _1 = _5 > 0xff; > > Confirmed. > > GCC does handle: > ``` > unsigned > foo0(unsigned val) > { > return (val & (~0xff000000)) > 0xff; > } > ``` > > Correctly. where does this happen? I've tried to find it in gcc/match.pd, but failed.