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.

Reply via email to