https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106868
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Ever confirmed|0 |1 Keywords| |diagnostic Summary|Bogus -Wdangling-pointer |[12/13 Regression] Bogus |warning with -O1 |-Wdangling-pointer warning | |with -O1 Component|c |tree-optimization Last reconfirmed| |2022-09-07 Status|UNCONFIRMED |NEW Priority|P3 |P2 CC| |msebor at gcc dot gnu.org Target Milestone|--- |12.3 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- Confirmed. <bb 2> [local count: 1073741824]: alloc (&q); q.0_1 = q; *p_4(D) = q.0_1; q ={v} {CLOBBER(eol)}; a_8 = __builtin_memcpy (q.0_1, "", 1); *a_8 = 0; return; (gdb) p debug_gimple_stmt (use_stmt) # .MEM_9 = VDEF <.MEM_7> *a_8 = 0; (gdb) p debug_gimple_stmt (stmt) # .MEM_6 = VDEF <.MEM_5> q ={v} {CLOBBER(eol)}; we somehow confuse q.0_1 = q; as assigning the address of the object 'q'. Some addr vs deref mismatch somewhere in the code. A regression with -Wall.