[Bug debug/115944] New: Incorrect code generation with -Og
blarsen at redhat dot com
gcc-bugzilla@gcc.gnu.org
Mon Jul 15 19:53:56 GMT 2024
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115944
Bug ID: 115944
Summary: Incorrect code generation with -Og
Product: gcc
Version: 14.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: debug
Assignee: unassigned at gcc dot gnu.org
Reporter: blarsen at redhat dot com
Target Milestone: ---
Created attachment 58671
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=58671&action=edit
small cpp code that reproduces the issue
The issue:
The attached code should segfault in a call to MyClass::call, however,
compiling the code with only -Og -g, the program runs without issue. That's
because the call to "intermediate" (which eventually calls the segfaulting
function) is never added to the assembly, the assembly of the main function
just ends up like this:
000000000040112f <main>:
40112f: 48 83 ec 08 sub $0x8,%rsp
401133: bf 01 00 00 00 mov $0x1,%edi
401138: e8 f3 fe ff ff call 401030 <_Znwm@plt>
40113d: b8 00 00 00 00 mov $0x0,%eax
401142: 48 83 c4 08 add $0x8,%rsp
401146: c3 ret
Interestingly, adding -fPIC to the compilation line generates correct code.
command line:
g++ -Og -g gcc_reproducer.cpp
GCC information:
gcc version 14.1.1 20240701 (Red Hat 14.1.1-7) (GCC)
Configured with: ../configure --enable-bootstrap
--enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,m2,lto --prefix=/usr
--mandir=/usr/share/man --infodir=/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-libstdcxx-zoneinfo=/usr/share/zoneinfo --with-linker-hash-style=gnu
--enable-plugin --enable-initfini-array
--with-isl=/builddir/build/BUILD/gcc-14.1.1-20240701/obj-x86_64-redhat-linux/isl-install
--enable-offload-targets=nvptx-none,amdgcn-amdhsa --enable-offload-defaulted
--without-cuda-driver --enable-gnu-indirect-function --enable-cet
--with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
--with-build-config=bootstrap-lto --enable-link-serialization=1
More information about the Gcc-bugs
mailing list