I think, to be correct, we should decorate **all** functions that are referred to from inline asm with the `used` attribute. This means add it to `abort_thread` too. The reason being that there's no guarantee the compiler will keep it in its actual form around. It could completely inline it and then remove it, or copy it and propagate constant arguments or whatever other optimization it can think of, and the original won't be available. I mean it's free to do with it as it wants since it thinks it's not used anywhere else.
Also I think we should hide this behind a macro like `DECLSPEC_USED` for example, like we do for `DECLSPEC_HIDDEN`. @julliard thoughts?