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)