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

            Bug ID: 107069
           Summary: string assignment triggers warning
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: joerg.rich...@pdv-fs.de
  Target Milestone: ---

cat > t.cc <<EOF
#include <string>

std::string f()
{
  std::string r;
  r = "C";
  return r;
}
EOF

/tools/pkg/gcc/12.2.0/bin/g++ -Wall -Wextra -Werror -std=gnu++20 -O2 -c -o
t.cc.o t.cc

gives:

...gcc/12.2.0/include/c++/12.2.0/bits/char_traits.h:431:56: error: 'void*
__builtin_memcpy(void*, const void*, long unsigned int)' accessing
9223372036854775810 or more bytes at offsets [2, 9223372036854775807] and 17
may overlap up to 9223372036854775813 bytes at offset -3 [-Werror=restrict]
  431 |         return static_cast<char_type*>(__builtin_memcpy(__s1, __s2,
__n));
      |                                       
~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~

Reply via email to