[PATCH] [CodeGen] tighten objc ivar invariant.load attribution
Saleem Abdulrasool
compnerd at compnerd.org
Sat Feb 16 21:26:13 PST 2013
On Fri, 15 Feb 2013, John McCall wrote:
> On Feb 14, 2013, at 3:14 PM, Saleem Abdulrasool <compnerd at compnerd.org> wrote:
> > On Thu, Feb 14, 2013 at 11:23 AM, John McCall <rjmccall at apple.com> wrote:
> >> On Feb 14, 2013, at 9:37 AM, Saleem Abdulrasool <compnerd at compnerd.org> wrote:
> >>> Add a few test cases and fix an inverted check.
> >>>
> >>> Hi rjmccall,
> >>>
> >>> http://llvm-reviews.chandlerc.com/D406
> >>>
> >>> CHANGE SINCE LAST DIFF
> >>> http://llvm-reviews.chandlerc.com/D406?vs=976&id=982#toc
> >>>
> >>> Files:
> >>> lib/CodeGen/CGObjCMac.cpp
> >>> test/CodeGenObjC/ivar-invariant-unimplemented.m
> >>> test/CodeGenObjC/ivar-invariant.m
> >>>
> >>> Index: lib/CodeGen/CGObjCMac.cpp
> >>> ===================================================================
> >>> --- lib/CodeGen/CGObjCMac.cpp
> >>> +++ lib/CodeGen/CGObjCMac.cpp
> >>> @@ -6449,10 +6449,23 @@
> >>> unsigned CVRQualifiers) {
> >>> ObjCInterfaceDecl *ID = ObjectTy->getAs<ObjCObjectType>()->getInterface();
> >>> llvm::Value *Offset = EmitIvarOffset(CGF, ID, Ivar);
> >>> +
> >>> + // Annotate the load as an invariant load iff the object type is the type, or
> >>> + // a derived type, of the class containing the ivar within an ObjC method.
> >>> + // This check is needed because the ivar offset is a lazily initialised value
> >>> + // that may depend on objc_msgSend to perform a fixup on the first message
> >>> + // dispatch.
> >>> + //
> >>> + // An additional opportunity to mark the load as invariant arises when the
> >>> + // base of the ivar access is a parameter to an Objective C method. However,
> >>> + // because the parameters are not available in the current interface, we
> >>> + // cannot perform this check.
> >>
> >> Go ahead and tweak the interface to propagate through an optional
> >> base expression and then implement your check based on that.
> >
> > Do you mind if I were to do that as a follow on change?
>
> No, that's fine.
>
> Do you need a commit?
>
Thanks; committed as r175386.
> John.
More information about the cfe-commits
mailing list