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.