================ @@ -486,6 +486,39 @@ ABIArgInfo AArch64ABIInfo::classifyArgumentType(QualType Ty, bool IsVariadicFn, } Size = llvm::alignTo(Size, Alignment); + // If the Aggregate is made up of pointers, use an array of pointers for the + // coerced type. This prevents having to convert ptr2int->int2ptr through + // the call, allowing alias analysis to produce better code. + std::function<bool(QualType Ty)> ContainsOnlyPointers = [&](QualType Ty) { ---------------- efriedma-quic wrote:
You can avoid std::function overhead with something like this: ``` struct QualType{}; void f(QualType t) { auto Recursive = [&](const auto& self, QualType t) { if (false) return false; return self(self, t); }; Recursive(Recursive, t); } ``` Not sure if it's worth worrying about. https://github.com/llvm/llvm-project/pull/135064 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits