On the first question, +1 to Nikita’s answer. The alwaysinline should be ignored when inlining is not legal, but there’s work required to ensure inlining is not missed in performance critical cases.
On the second question, I am not in favor of an error diagnostic. It’s possible for the same alwaysinline function to be inlined in one context and not in another. ORE is great to have though.