X86 allows inlining functions if the callee target features are a subset of the caller target features. This ensures that we don't inline something into a caller that does not support it.
However, this does not account for possible call ABI mismatches as a result of inlining. If a call passing a vector argument was originally in -avx function, calling another -avx function, the vector is passed in xmm. If we now inline it into an +avx function, then it will be passed in ymm, even though the callee expects it in xmm.
Fix this by scanning over all calls in the function and checking whether ABI incompatibility is possible. Calls that only pass scalar types are excluded, as I believe those always use the same ABI independent of target features (right?)