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

Jonathan Wakely <redi at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2019-06-12
           See Also|                            |https://gcc.gnu.org/bugzill
                   |                            |a/show_bug.cgi?id=84299
     Ever confirmed|0                           |1

--- Comment #4 from Jonathan Wakely <redi at gcc dot gnu.org> ---
This is taken from the libstdc++ testsuite:

#include <functional>
#include <assert.h>

int f1() { return 1; }
struct { int operator()() { return 2; } } f2;

void test01()
{
  typedef std::function<int()> function;

  function fo(f1);
  function fo1;
  fo1 = (std::move(fo));
  assert( static_cast<bool>(fo1) );
  assert( fo1() == 1 );

  fo = function(f2);
  function fo2;
  fo2 = (std::move(fo));
  assert( static_cast<bool>(fo2) );
  assert( fo2() == 2 );
}

int main()
{
  test01();
}

Since GCC 7 this gives warnings when -Wsystem-headers -Wuninitialized -O1 is
used:


In file included from
/xhome/jwakely/gcc/10/include/c++/10.0.0/bits/stl_function.h:60,
                 from /xhome/jwakely/gcc/10/include/c++/10.0.0/functional:49,
                 from uninit.cc:1:
/xhome/jwakely/gcc/10/include/c++/10.0.0/bits/move.h: In function 'void
test01()':
/xhome/jwakely/gcc/10/include/c++/10.0.0/bits/move.h:193:7: warning:
'<anonymous>' is used uninitialized in this function [-Wuninitialized]
  193 |       __a = _GLIBCXX_MOVE(__b);
      |       ^~~
/xhome/jwakely/gcc/10/include/c++/10.0.0/bits/move.h:192:11: warning:
'<anonymous>' may be used uninitialized in this function
[-Wmaybe-uninitialized]
  192 |       _Tp __tmp = _GLIBCXX_MOVE(__a);
      |           ^~~~~
/xhome/jwakely/gcc/10/include/c++/10.0.0/bits/move.h:193:7: warning:
'<anonymous>' may be used uninitialized in this function
[-Wmaybe-uninitialized]
  193 |       __a = _GLIBCXX_MOVE(__b);
      |       ^~~
/xhome/jwakely/gcc/10/include/c++/10.0.0/bits/move.h:193:7: warning:
'*((void*)&<anonymous> +24)' may be used uninitialized in this function
[-Wmaybe-uninitialized]
  193 |       __a = _GLIBCXX_MOVE(__b);
      |       ^~~
/xhome/jwakely/gcc/10/include/c++/10.0.0/bits/move.h:193:7: warning:
'<anonymous>' may be used uninitialized in this function
[-Wmaybe-uninitialized]
  193 |       __a = _GLIBCXX_MOVE(__b);
      |       ^~~


valgrind and UBsan don't report any problems though.

Reply via email to