
INLINE[n] becomes INLINEFROM[n] NOINLINE[n] becomes NOINLINEBEFORE[n]
INLINE[~n] becomes INLINEBEFORE[n]
NOINLINE[~n] becomes NOINLINEFROM[n]
Still not great, because INLINE[n] doesn't inline before phase n either. Maybe we should make that explicit, and use 2 separate pragmas: INLINE[n] becomes NO_INLINE_BEFORE[n], INLINE_FROM[n] NOINLINE[n] becomes NO_INLINE_BEFORE[n] INLINE[~n] becomes NO_INLINE_FROM[n], INLINE_BEFORE[n] NOINLINE[~n] becomes NO_INLINE_FROM[n] (a combination of NO_INLINE_BEFORE[n] and INLINE_BEFORE[n], or NO_INLINE_FROM[n] and INLINE_FROM[n], would be an error) If that is too verbose, we could make the 'no inline' part implicit: INLINE[n] becomes INLINE_FROM[n] NOINLINE[n] becomes INLINEABLE_FROM[n] INLINE[~n] becomes INLINE_BEFORE[n] NOINLINE[~n] becomes INLINEABLE_BEFORE[n]