https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100314
--- Comment #4 from Jan Hubicka <hubicka at gcc dot gnu.org> --- However i is also dead at dse time: void d (int m) { int k; int * l[5]; int * * * i[1]; int * * h[30]; int b.1_11; int _12; int g.2_13; <bb 2> : MEM <char[232]> [(int * *[30] *)&h + 8B] = {}; h[0] = &c; i[0] = &h[3]; if (m_6(D) != 0) goto <bb 3>; [INV] else goto <bb 4>; [INV] <bb 3> : foo (); <bb 4> : l[0] = &k; l[1] = &k; l[2] = &k; l[3] = &k; l[4] = &k; goto <bb 6>; [100.00%] <bb 5> : j = &l[0]; b.1_11 = b; _12 = b.1_11 + 1; b = _12; <bb 6> : g.2_13 = g; if (g.2_13 != 0) goto <bb 5>; [89.00%] else goto <bb 7>; [11.00%] <bb 7> : k ={v} {CLOBBER}; l ={v} {CLOBBER}; h ={v} {CLOBBER}; i ={v} {CLOBBER}; return; } Not sure why DSE is not optimizing this out.