ahatanak added inline comments.
================ Comment at: include/clang/AST/Decl.h:3631 + PassedIndirectly = true; + } + ---------------- rjmccall wrote: > I feel like this flag should be set by Sema for C++ types that have to be > passed indirectly as well; it can then become the single point of truth for > that information. I moved CXXRecordDecl::CanPassInRegisters to RecordDecl along with its setter and getter functions. ================ Comment at: lib/CodeGen/CGNonTrivialStruct.cpp:764 + Object = CGF->EmitObjCConsumeObject(QT, Object); + CGF->EmitARCStoreWeak(Addrs[DstIdx], Object, true); + } ---------------- rjmccall wrote: > I guess this is the most reasonable thing to do, given that we don't have an > entrypoint for it. Please ask the ObjC runtime team to consider giving us > one, though. We could pretty easily peephole assignments into `__weak` > variables where the source is loaded from a `__weak` l-value / x-value, and > Swift would probably be able to take advantage of it, too. > > You might want to go ahead and add `emitARCCopyAssignWeak` / > `emitARCMoveAssignWeak` methods on CGF that do these operations and which can > be optimized to use those entrypoints if/when they're added. Do you mean we should ask for the following objc runtime functions and use them in visitARCWeak? ``` // dst and src are either null or registered as __weak objects. void objc_copyAssignWeak(id *dst, id *src) void objc_moveAssignWeak(id *dst, id *src) ```` ================ Comment at: lib/CodeGen/TargetInfo.cpp:1326 + if (RetTy.isPassedIndirectly() == QualType::APK_Struct) + return getNaturalAlignIndirect(RetTy); + ---------------- rjmccall wrote: > Can we combine this into a single function that covers both the C++ case and > this new one? Otherwise it seems likely that individual targets over time > will only add one or the other. I added another definition of classifyReturnType and taught getRecordArgABI to detect non-trivial C structs. Currently, x86, arm, and arm64 are the only targets that use the new overload of classifyReturnType. I can modify the other targets to use it too if that is desirable. https://reviews.llvm.org/D44095 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits