https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110173
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #2) > Hmm > static void i() { *h = j(); } > static int *j(unsigned o) { > > I suspect this is just might be another one of these cases where a variable > is uninitialized gets a different value now. Yes it is definitely related to that variable being uninitialized. if you replace o with either 1 or 0, the call to foo is there even in GCC 13. I think this can be marked as a non-regression.