public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/109791] New: -Wstringop-overflow warning with -O3 and _GLIBCXX_USE_CXX11_ABI=0
@ 2023-05-09 16:48 szhong at perforce dot com
  2023-05-09 17:28 ` [Bug tree-optimization/109791] " pinskia at gcc dot gnu.org
                   ` (17 more replies)
  0 siblings, 18 replies; 19+ messages in thread
From: szhong at perforce dot com @ 2023-05-09 16:48 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 109791
           Summary: -Wstringop-overflow warning with -O3 and
                    _GLIBCXX_USE_CXX11_ABI=0
           Product: gcc
           Version: 12.1.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: szhong at perforce dot com
  Target Milestone: ---

Created attachment 55033
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=55033&action=edit
preprocessed file

It appears -fvect-cost-model=dynamic from the -O3 flag is causing the
-Wstringop-overflow warning.

testcase:

#include <algorithm>
#include <string>

int main()
{
    char str[] = " a";
    do {
        std::string input(str, sizeof(str) / sizeof(*str));
    }
    while (std::next_permutation(str, str + sizeof(str) / sizeof(*str)));

    return 0;
}


$ g++ -v -save-temps -m64 -D_GLIBCXX_USE_CXX11_ABI=0 -O2
-fvect-cost-model=dynamic no_cxx11_abi.cpp
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/12/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap
--enable-languages=c,c++,fortran,lto --prefix=/opt/rh/gcc-toolset-12/root/usr
--mandir=/opt/rh/gcc-toolset-12/root/usr/share/man
--infodir=/opt/rh/gcc-toolset-12/root/usr/share/info
--with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared
--enable-threads=posix --enable-checking=release --enable-multilib
--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions
--enable-gnu-unique-object --enable-linker-build-id
--with-gcc-major-version-only --enable-libstdcxx-backtrace
--with-linker-hash-style=gnu --enable-plugin --enable-initfini-array
--with-isl=/builddir/build/BUILD/gcc-12.1.1-20220628/obj-x86_64-redhat-linux/isl-install
--enable-offload-targets=nvptx-none --without-cuda-driver
--enable-offload-defaulted --enable-gnu-indirect-function --enable-cet
--with-tune=generic --with-arch_64=x86-64-v2 --with-arch_32=x86-64
--build=x86_64-redhat-linux --with-build-config=bootstrap-lto
--enable-link-serialization=1
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.1.1 20220628 (Red Hat 12.1.1-3) (GCC) 
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-m64' '-D' '_GLIBCXX_USE_CXX11_ABI=0'
'-O2' '-fvect-cost-model=dynamic' '-shared-libgcc' '-mtune=generic'
'-march=x86-64-v2' '-dumpdir' 'a-'
 /opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/12/cc1plus -E
-quiet -v -D_GNU_SOURCE -D _GLIBCXX_USE_CXX11_ABI=0 no_cxx11_abi.cpp -m64
-mtune=generic -march=x86-64-v2 -fvect-cost-model=dynamic -O2 -fpch-preprocess
-o a-no_cxx11_abi.ii
ignoring nonexistent directory
"/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/include-fixed"
ignoring nonexistent directory
"/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../x86_64-redhat-linux/include"
#include "..." search starts here:
#include <...> search starts here:

/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12

/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/x86_64-redhat-linux

/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../include/c++/12/backward
 /opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/include
 /usr/local/include
 /opt/rh/gcc-toolset-12/root/usr/include
 /usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-m64' '-D' '_GLIBCXX_USE_CXX11_ABI=0'
'-O2' '-fvect-cost-model=dynamic' '-shared-libgcc' '-mtune=generic'
'-march=x86-64-v2' '-dumpdir' 'a-'
 /opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/12/cc1plus
-fpreprocessed a-no_cxx11_abi.ii -quiet -dumpdir a- -dumpbase no_cxx11_abi.cpp
-dumpbase-ext .cpp -m64 -mtune=generic -march=x86-64-v2 -O2 -version
-fvect-cost-model=dynamic -o a-no_cxx11_abi.s
GNU C++17 (GCC) version 12.1.1 20220628 (Red Hat 12.1.1-3)
(x86_64-redhat-linux)
        compiled by GNU C version 12.1.1 20220628 (Red Hat 12.1.1-3), GMP
version 6.2.0, MPFR version 4.1.0-p9, MPC version 1.2.1, isl version
isl-0.18-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++17 (GCC) version 12.1.1 20220628 (Red Hat 12.1.1-3)
(x86_64-redhat-linux)
        compiled by GNU C version 12.1.1 20220628 (Red Hat 12.1.1-3), GMP
version 6.2.0, MPFR version 4.1.0-p9, MPC version 1.2.1, isl version
isl-0.18-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 4fe953bdd6603241811586d9fd73a7cb
In file included from
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_pair.h:61,
                 from
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_algobase.h:64,
                 from
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/algorithm:60,
                 from no_cxx11_abi.cpp:1:
In function \u2018std::_Require<std::__not_<std::__is_tuple_like<_Tp> >,
std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&,
_Tp&) [with _Tp = char]\u2019,
    inlined from \u2018void std::iter_swap(_ForwardIterator1,
_ForwardIterator2) [with _ForwardIterator1 = char*; _ForwardIterator2 =
char*]\u2019 at
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_algobase.h:182:11,
    inlined from \u2018void std::__reverse(_RandomAccessIterator,
_RandomAccessIterator, random_access_iterator_tag) [with _RandomAccessIterator
= char*]\u2019 at
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_algo.h:1107:18,
    inlined from \u2018bool std::__next_permutation(_BidirectionalIterator,
_BidirectionalIterator, _Compare) [with _BidirectionalIterator = char*;
_Compare = __gnu_cxx::__ops::_Iter_less_iter]\u2019 at
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_algo.h:2907:22,
    inlined from \u2018bool std::next_permutation(_BIter, _BIter) [with _BIter
= char*]\u2019 at
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_algo.h:2947:2,
    inlined from \u2018int main()\u2019 at no_cxx11_abi.cpp:10:33:
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/move.h:205:11: warning:
writing 8 bytes into a region of size 2 [-Wstringop-overflow=]
  205 |       __a = _GLIBCXX_MOVE(__b);
      |       ~~~~^~~~~~~~~~~~~~~~
no_cxx11_abi.cpp: In function \u2018int main()\u2019:
no_cxx11_abi.cpp:6:10: note: at offset [1, 2] into destination object
\u2018str\u2019 of size 3
    6 |     char str[] = " a";
      |          ^~~
no_cxx11_abi.cpp:6:10: note: at offset [2, 3] into destination object
\u2018str\u2019 of size 3
In function \u2018std::_Require<std::__not_<std::__is_tuple_like<_Tp> >,
std::is_move_constructible<_Tp>, std::is_move_assignable<_Tp> > std::swap(_Tp&,
_Tp&) [with _Tp = char]\u2019,
    inlined from \u2018void std::iter_swap(_ForwardIterator1,
_ForwardIterator2) [with _ForwardIterator1 = char*; _ForwardIterator2 =
char*]\u2019 at
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_algobase.h:182:11,
    inlined from \u2018void std::__reverse(_RandomAccessIterator,
_RandomAccessIterator, random_access_iterator_tag) [with _RandomAccessIterator
= char*]\u2019 at
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_algo.h:1107:18,
    inlined from \u2018bool std::__next_permutation(_BidirectionalIterator,
_BidirectionalIterator, _Compare) [with _BidirectionalIterator = char*;
_Compare = __gnu_cxx::__ops::_Iter_less_iter]\u2019 at
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_algo.h:2907:22,
    inlined from \u2018bool std::next_permutation(_BIter, _BIter) [with _BIter
= char*]\u2019 at
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/stl_algo.h:2947:2,
    inlined from \u2018int main()\u2019 at no_cxx11_abi.cpp:10:33:
/opt/rh/gcc-toolset-12/root/usr/include/c++/12/bits/move.h:206:11: warning:
writing 8 bytes into a region of size 0 [-Wstringop-overflow=]
  206 |       __b = _GLIBCXX_MOVE(__tmp);
      |       ~~~~^~~~~~~~~~~~~~~~~~
no_cxx11_abi.cpp: In function \u2018int main()\u2019:
no_cxx11_abi.cpp:6:10: note: at offset 9223372036854775803 into destination
object \u2018str\u2019 of size 3
    6 |     char str[] = " a";
      |          ^~~
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-m64' '-D' '_GLIBCXX_USE_CXX11_ABI=0'
'-O2' '-fvect-cost-model=dynamic' '-shared-libgcc' '-mtune=generic'
'-march=x86-64-v2' '-dumpdir' 'a-'
 as -v --64 -o a-no_cxx11_abi.o a-no_cxx11_abi.s
GNU assembler version 2.38 (x86_64-redhat-linux) using BFD version version
2.38-16.el9
COMPILER_PATH=/opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/12/:/opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/12/:/opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/:/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/:/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/
LIBRARY_PATH=/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/:/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-m64' '-D' '_GLIBCXX_USE_CXX11_ABI=0'
'-O2' '-fvect-cost-model=dynamic' '-shared-libgcc' '-mtune=generic'
'-march=x86-64-v2' '-dumpdir' 'a.'
 /opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/12/collect2
-plugin
/opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/12/liblto_plugin.so
-plugin-opt=/opt/rh/gcc-toolset-12/root/usr/libexec/gcc/x86_64-redhat-linux/12/lto-wrapper
-plugin-opt=-fresolution=a.res -plugin-opt=-pass-through=-lgcc_s
-plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc
-plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lgcc --build-id
--no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_x86_64 -dynamic-linker
/lib64/ld-linux-x86-64.so.2 /lib/../lib64/crt1.o /lib/../lib64/crti.o
/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/crtbegin.o
-L/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12
-L/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../lib64
-L/lib/../lib64 -L/usr/lib/../lib64
-L/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../..
a-no_cxx11_abi.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc
/opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/crtend.o
/lib/../lib64/crtn.o
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-m64' '-D' '_GLIBCXX_USE_CXX11_ABI=0'
'-O2' '-fvect-cost-model=dynamic' '-shared-libgcc' '-mtune=generic'
'-march=x86-64-v2' '-dumpdir' 'a.'

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="9.1 (Plow)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="9.1"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Red Hat Enterprise Linux 9.1 (Plow)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/9/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_BUGZILLA_PRODUCT_VERSION=9.1
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.1"

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2023-06-07 22:28 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-09 16:48 [Bug c++/109791] New: -Wstringop-overflow warning with -O3 and _GLIBCXX_USE_CXX11_ABI=0 szhong at perforce dot com
2023-05-09 17:28 ` [Bug tree-optimization/109791] " pinskia at gcc dot gnu.org
2023-05-10  7:26 ` rguenth at gcc dot gnu.org
2023-05-11  8:05 ` aldyh at gcc dot gnu.org
2023-05-11  8:19 ` aldyh at gcc dot gnu.org
2023-05-11  9:39 ` rguenth at gcc dot gnu.org
2023-05-11  9:47 ` aldyh at gcc dot gnu.org
2023-05-11 11:36 ` rguenther at suse dot de
2023-05-11 11:40 ` rguenth at gcc dot gnu.org
2023-05-11 12:22 ` rguenth at gcc dot gnu.org
2023-05-11 12:34 ` rguenth at gcc dot gnu.org
2023-05-11 12:35 ` rguenth at gcc dot gnu.org
2023-05-11 12:36 ` rguenth at gcc dot gnu.org
2023-05-12 11:48 ` cvs-commit at gcc dot gnu.org
2023-05-25 12:14 ` rguenth at gcc dot gnu.org
2023-05-25 12:15 ` rguenth at gcc dot gnu.org
2023-05-25 12:16 ` rguenth at gcc dot gnu.org
2023-05-25 15:35 ` pinskia at gcc dot gnu.org
2023-06-07 22:28 ` pinskia at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).