https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109470

--- Comment #2 from Xi Ruoyao <xry111 at gcc dot gnu.org> ---
With "-Wall -O1" this is diagnosed properly, but with a spurious
maybe-uninitialized warning:

In file included from /usr/include/c++/12.2.0/cassert:44,
                 from t.c:2:
t.c: In function 'int main()':
t.c:17:11: warning: dangling pointer 'dst' to an unnamed temporary may be used
[-Wdangling-pointer=]
   17 |    assert(dst <= MAX);
      |           ^~~
t.c:16:24: note: unnamed temporary defined here
   16 |    const int& dst = Min(MAX, (int)lenght);
      |                     ~~~^~~~~~~~~~~~~~~~~~
t.c:16:24: warning: '<anonymous>' may be used uninitialized
[-Wmaybe-uninitialized]

With "-Wall -O2" only the spurious maybe-uninitialized warning is emitted,
which is not very helpful.

With "-Wall -O0" no warning at all (diagnosing this issue at least needs some
IPA).

Reply via email to