https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121936

--- Comment #22 from Jason Merrill <jason at gcc dot gnu.org> ---
(In reply to Martin Jambor from comment #21)
> Second, the following optimism about inline functions seems to be
> wrong:
> 
>   /* Inline functions are safe to be analyzed even if their symbol can
>      be overwritten at runtime.  It is not meaningful to enforce any sane
>      behavior on replacing inline function by different body.  */
>   else if (DECL_DECLARED_INLINE_P (decl))
>     avail = AVAIL_AVAILABLE;

Perhaps we want an intermediate availability between _INTERPOSABLE and
_AVAILABLE that allows inlining and cloning, but limits IPA when those are not
done (unless -fno-semantic-interposition, possibly also a separate switch?).

_REFINABLE?  _COMDAT?

I note that without this DECL_DECLARED_INLINE_P case, we then check
decl_replaceable_p, which returns false for COMDAT, leading again to
_AVAILABLE.

Reply via email to