But INLINABLE has its own semantics (i.e. “do retain a copy of the
RHS”), and NOINLNE does, as far as I know, not imply this.
But maybe your idea works with
NOINLINE[n] becomes MAY_INLINE_FROM[n]
NOINLINE[~n] becomes MAY_INLINE_BEFORE[n]
INLINE[n] becomes MUST_INLINE_FROM[n]
INLINE[~n] becomes MUST_INLINE_BEFORE[n]