Currently, llvm does not inline functions called through alias.
This causes performance degradation on Windows compared
with Linux, since on Windows some constructors are emitted
as aliases to other constructors.
This patch allows functions called through alias to be inlined.
If an alias has weak linkage, then it could be overridden by a strong definition. So you cannot resolve alias to aliasee in such case. Same for the case below