https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111167
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- In this case the problem seems to be jump threading related. If we did: ``` void f(int); void lookup_attribute1(const char *attr_ns, int list, int t) { short t1; if (attr_ns) { if (list) {t1 = 0; goto L1;} return; } if (list){t1 = t;goto L1;} else return; L1: f(t1); } ``` I Notice clang does not do this either even though the original testcase seems ok.