https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87671
Bug ID: 87671 Summary: Incorrect debugging information for unique_ptr passed to a constructor Product: gcc Version: 8.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: anton at swarmer dot me Target Milestone: --- Created attachment 44866 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44866&action=edit Source code to reproduce How to reproduce: compile the attached example with g++. I used: g++-8 -Wall -Wextra -save-temps bug.cpp -O0 -g -fsanitize=address,undefined -o ./bug Run with either gdb or lldb and set a breakpoint on line 7 (std::cout << *ptr). Print *ptr in the debugger. For me 16 is printed, even though it should be 42. Continue in debugger, observe that 42 is indeed printed to console. The issue disappears if instead of a class constructor, I pass unique_ptr to a normal function. When compiling with clang++, both gdb and lldb show correct output. When compiling with g++, both of them show incorrect output - which is why I suspect that g++ is at fault here. The system is Linux x86-64. $ g++-8 -v Using built-in specs. COLLECT_GCC=g++-8 COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/8/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 8.2.0-1ubuntu2~18.04' --with-bugurl=file:///usr/share/doc/gcc-8/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-8 --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 --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-offload-targets=nvptx-none --without-cuda-driver --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 8.2.0 (Ubuntu 8.2.0-1ubuntu2~18.04)