https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103040
--- Comment #14 from Iain Buclaw <ibuclaw at gdcproject dot org> --- (In reply to hubicka from comment #13) > > See above comments from Iain, even if that pre-initialization is removed it > > is > > still miscompiled. And, the testcase fails not because of the padding bits > > not > > being zero, but because the address of self stored into one of the fields > > isn't > > there or modref thinks it can't be changed or set to that. But for > > corresponding C++ it handles it ok. > Perhaps TREE_ADDRESSABLE on the type which is being used to test whether > return slot pointer may escape. Non-POD types (all classes, and any struct with a postblit, copyctor, or dtor) already have TREE_ADDRESSABLE set on the RECORD_TYPE.