https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105539
--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to qinzhao from comment #5) > I am a little confused: > > with gcc -Wuninitialized -O1 (without -ftrivial-auto-var-init=zero), there > are two issues: > > 1. the early uninitialized analysis didn't catch the uninitialized usage of > y; It's a conditional uninit use which we do not warn on early by design (for the fear of too many false positives, that is). > 2. the ccp optimization deletes the if (z) statement completely: > > [opc@qinzhao-aarch64-ol8 105539]$ cat t.c.034t.ccp1 > > ;; Function x (x, funcdef_no=0, decl_uid=3591, cgraph_uid=1, symbol_order=0) > > Removing basic block 3 > Merging blocks 2 and 4 > int x (int z) > { > int y; > > <bb 2> : > return 10; > > } That's expected from optimistic lattice propagation which merges TOP with the constant. > are the above two bugs? Well, it works as designed. But sure, that we fail to diagnose the uninit use is unfortunate and there exist bugs for this specific issue already.