What | Removed | Added |
---|---|---|
CC | jh@suse.com |
(In reply to Aaron Puchert from comment #1) > (In reply to Fabian Vogt from comment #0) > > 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 > 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.