zoecarver added inline comments.
================ Comment at: clang/lib/Sema/SemaDeclCXX.cpp:6416 + if (D->hasAttr<TrivialABIAttr>()) + return true; + ---------------- rjmccall wrote: > zoecarver wrote: > > rjmccall wrote: > > > I don't think we can just unconditionally check for the attribute. The > > > rule for `trivial_abi` is that it overrides direct sources of > > > non-triviality, but if there's a subobject which can't be safely passed > > > in registers, we'll still pass aggregates indirectly. This means we can > > > safely add the attribute whenever a class's own special members don't > > > rely on non-triviality without having to recursively check the component > > > types. > > If there's a non-trivial field (or base) then the attribute won't be > > applied and a warning will be emitted. See the below tests (though, it > > would probably be good to add some more). > Do we just remove it without a warning in template instantiation? At any > rate, if we're relying on the attribute not being present when it isn't > authoritative, we should say that here. Alright. I'll put a comment. > Do we just remove it without a warning in template instantiation? [[ https://godbolt.org/z/8Ex936 | That would appear to be what happens. ]] Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D92361/new/ https://reviews.llvm.org/D92361 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits