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

            Bug ID: 95349
           Summary: Using std::launder(p) produces unexpected behavior
                    where (p) produces expected behavior
           Product: gcc
           Version: 10.1.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: andrew2085 at gmail dot com
  Target Milestone: ---

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

All of these f1/f2/f3 functions should do the same thing, essentially the same
thing as std::start_lifetime_as. Since the return value of placement new is
used, std::launder is not necessary here, but using it anyway produces
unexpected behavior when it should do nothing at all. Every version of gcc and
every system I've tried has produced the same result.

Here's the original source for reference: https://godbolt.org/z/zdQsfV

gcc version: 10.1.0 (All other versions tested produce same behavior)

system: Arch Linux x86_64

compile command: g++ -save-temps -std=c++17 -O2 -fno-stack-protector
-fstrict-aliasing main.cpp && ./a.out

configure options: g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/10.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib
--libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --with-isl
--with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit
--enable-cet=auto --enable-checking=release --enable-clocale=gnu
--enable-default-pie --enable-default-ssp --enable-gnu-indirect-function
--enable-gnu-unique-object --enable-install-libiberty --enable-linker-build-id
--enable-lto --enable-multilib --enable-plugin --enable-shared
--enable-threads=posix --disable-libssp --disable-libstdcxx-pch
--disable-libunwind-exceptions --disable-werror
gdc_include_dir=/usr/include/dlang/gdc
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 10.1.0 (GCC)

Reply via email to