efriedma added a comment. In D102015#2743634 <https://reviews.llvm.org/D102015#2743634>, @rjmccall wrote:
> Objective-C object types also have aggregate evaluation kind. Those can only > be used as value types in an old, fragile ObjC ABI, but I believe we haven't > yet formally decided to remove support for that. Fortunately, however, > there's a much better simplification available: this > `hasAggregateEvaluationKind(Ty)` call is literally doing nothing that > couldn't just be a `getAs<RecordType>()` call, and then we don't need to > worry about it. If you're confident that only RecordTypes need to be destroyed, sure. Did some grepping, and there's some other places using isParamDestroyedInCallee(); I'll make sure they're also okay. > ...I'm confused about why this code is doing what it's doing with cleanups, > though. Why does it only apply when the parameter is indirect? I believe > `isParamDestroyedInCallee()` can apply to types that are passed in other > ways, so where we pushing the destructor for those, and why isn't it good > enough to handle this case as well? Objects with a non-trivial destructor end up indirect anyway under the normal ABI rules. Not sure how it interacts with trivial_abi; I'll look into it. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D102015/new/ https://reviews.llvm.org/D102015 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits