[Bug 1187864] Semantic interposition inhibits optimization of shared libraries
http://bugzilla.opensuse.org/show_bug.cgi?id=1187864 http://bugzilla.opensuse.org/show_bug.cgi?id=1187864#c2 Richard Biener <rguenther@suse.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jh@suse.com --- Comment #2 from Richard Biener <rguenther@suse.com> --- (In reply to Aaron Puchert from comment #1)
Using the "-fno-semantic-interposition" compiler option, interprocedural optimization can be enabled for exported symbols [...] The way I see it, -fno-semantic-interposition is justified by the "one definition rule" in both C and C++. Having different functions with the same (qualified) name (and signature for C++) is not allowed in a program. There is still a non-standard "back door": __attribute__((weak)). So if necessary it's still possible to define overridable functions, but other libraries can't just override anything they want. It's also kind of on-by-default in Clang (not literally, but Clang does IPO on default visibility functions) and on other platforms, so there is hopefully not a lot of software out
(In reply to Fabian Vogt from comment #0) there that relies on semantic interposition.
I think for GCC the ODR trumps -fsemantic-interposition though GCC applies ODR only to C++. Honza, please correct me if I'm wrong here. So I'm not sure whether -fno-semantic-interposition on its own has any measurable effect on a C++ code base. For C there's no ODR so things are more complicated. -- You are receiving this mail because: You are on the CC list for the bug.
participants (1)
-
bugzilla_noreply@suse.com