public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/110914] New: Optimization eliminating necessary assignment before 0-byte memcpy
@ 2023-08-05 15:46 erosenberger at kinetica dot com
  2023-08-05 15:47 ` [Bug c++/110914] " erosenberger at kinetica dot com
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: erosenberger at kinetica dot com @ 2023-08-05 15:46 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 110914
           Summary: Optimization eliminating necessary assignment before
                    0-byte memcpy
           Product: gcc
           Version: 11.4.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: erosenberger at kinetica dot com
  Target Milestone: ---

Given the attached source file, when compiled with "g++ -O2 test.cpp", no code
is generated for the line "val_int = 0;" in the Int8_buf constructor. In the
case where the memcpy on the following line is instructed to copy 0 bytes, this
results in val_int remaining uninitialized (and just containing whatever random
value was in memory previously).

In this test program, the result is that the output from main() is "49 49",
when it should be "49 0". (This is because the second 49 is the value remaining
in stack memory from the first call to foo(...) that is never initialized to 0
by the skipped line.)

If the skipped line is changed to initialize to a value other than 0, then
correct code is generated. If compiled with -O1, correct code is also
generated.

Using Compiler Explorer it appears that gcc 9 and earlier produce the correct
code, and gcc 10 is the first version to produce incorrect code.

gcc -v:
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu
11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs
--enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr
--with-gcc-major-version-only --program-suffix=-11
--program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--with-default-libstdcxx-abi=new --enable-gnu-unique-object
--disable-vtable-verify --enable-plugin --enable-default-pie --with-system-zlib
--enable-libphobos-checking=release --with-target-system-zlib=auto
--enable-objc-gc=auto --enable-multiarch --disable-werror --enable-cet
--with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32
--enable-multilib --with-tune=generic
--enable-offload-targets=nvptx-none=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-nvptx/usr,amdgcn-amdhsa=/build/gcc-11-XeT9lY/gcc-11-11.4.0/debian/tmp-gcn/usr
--without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
--with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)

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

end of thread, other threads:[~2023-08-30 10:00 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-08-05 15:46 [Bug c++/110914] New: Optimization eliminating necessary assignment before 0-byte memcpy erosenberger at kinetica dot com
2023-08-05 15:47 ` [Bug c++/110914] " erosenberger at kinetica dot com
2023-08-05 16:04 ` [Bug tree-optimization/110914] [11/12/13/14 Regression] " pinskia at gcc dot gnu.org
2023-08-05 16:14 ` pinskia at gcc dot gnu.org
2023-08-29 15:50 ` [Bug tree-optimization/110914] [11/12/13/14 Regression] Optimization eliminating necessary assignment before 0-byte memcpy since r10-5451 jakub at gcc dot gnu.org
2023-08-29 16:55 ` jakub at gcc dot gnu.org
2023-08-30  9:22 ` cvs-commit at gcc dot gnu.org
2023-08-30  9:33 ` cvs-commit at gcc dot gnu.org
2023-08-30  9:49 ` cvs-commit at gcc dot gnu.org
2023-08-30  9:57 ` cvs-commit at gcc dot gnu.org
2023-08-30 10:00 ` jakub 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).