https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104288
Christian Prochaska <christian.procha...@genode-labs.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |christian.prochaska@genode- | |labs.com --- Comment #13 from Christian Prochaska <christian.procha...@genode-labs.com> --- I found the "Register non-null side effects properly." commit with git bisect while debugging a page fault in the Genode OS framework built with GCC 12.2.0. It turned out that a null pointer check which was present before this commit is now not present anymore. The C++ code with the null pointer check can be found on GitHub: https://github.com/genodelabs/genode/blob/a84af9a9606450471b8038a35f9b55057efa0850/repos/base-nova/src/lib/base/ipc.cc#L71 This is the implementation of the 'Thread::myself()' function which returns a null pointer in some conditions: https://github.com/genodelabs/genode/blob/a84af9a9606450471b8038a35f9b55057efa0850/repos/base/src/lib/base/thread_myself.cc#L22 I compared the disassembled code from objdump and this part is missing when the commit is applied: Genode::ipc_call(Genode::Native_capability, Genode::Msgbuf_base&, Genode::Msgbuf_base&, unsigned long): /.../repos/base-nova/src/lib/base/ipc.cc:71 addr_t const manual_rcv_sel = myself ? myself->native_thread().client_rcv_sel 85f78: 48 83 bd 50 ff ff ff cmpq $0x0,-0xb0(%rbp) 85f7f: 00 85f80: 48 c7 c3 ff ff ff ff mov $0xffffffffffffffff,%rbx 85f87: 74 1d je 85fa6 <Genode::ipc_call(Genode::Native_capability, Genode::Msgbuf_base&, Genode::Msgbuf_base&, unsigned long) /.../repos/base-nova/src/lib/base/ipc.cc:71 (discriminator 1) Now I'm not sure if the problem is in the Genode code or in GCC. Any ideas?