efriedma-quic wrote:
So the rule here is essentially that if we see a call to an always_inline
function, we ignore the attributes on the callee and just directly examine the
body? That makes sense from the perspective of being user-friendly. The
backend still needs to be robust: the AlwaysInliner still needs to detect
whether the callee contains an operation that prevents inlining... but I guess
that's a separate issue.
Please make sure we have a testcase showing what happens if the always_inline
function is defined after the caller:
```
int incompatible_neon();
int bar() __arm_streaming { return incompatible_neon(); }
__attribute__((always_inline)) void incompatible_neon() {
__attribute((vector_size(16))) char vec = { 0 };
vec = __builtin_neon_vqaddq_v(vec, vec, 33);
}
```
https://github.com/llvm/llvm-project/pull/174608
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits