r191016 - Refinement to my previous patch for

Alexander Potapenko glider at google.com
Thu Sep 19 10:44:03 PDT 2013


Hi,

this patch causes the following warning when I build Clang:

Building CXX object
tools/clang/lib/Sema/CMakeFiles/clangSema.dir/TargetAttributesSema.cpp.o
/Users/glider/src/asan-new-removeothers/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp:4175:23:
error: template argument uses local type '<anonymous enum at
      /Users/glider/src/asan-new-removeothers/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp:4148:3>'
[-Werror,-Wlocal-type-template-args]
    << attr.getName() << (method ? EP_ObjCMethod : EP_ObjCProperty)
                      ^~
[ 82%] Building CXX object
tools/clang/lib/Sema/CMakeFiles/clangSema.dir/TypeLocBuilder.cpp.o
1 error generated.

On Thu, Sep 19, 2013 at 9:18 PM, Fariborz Jahanian <fjahanian at apple.com> wrote:
> Author: fjahanian
> Date: Thu Sep 19 12:18:55 2013
> New Revision: 191016
>
> URL: http://llvm.org/viewvc/llvm-project?rev=191016&view=rev
> Log:
> Refinement to my previous patch for
> objc_returns_inner_pointer on properties. // rdar://14990439
>
> Modified:
>     cfe/trunk/include/clang/Basic/Attr.td
>     cfe/trunk/lib/Sema/SemaDeclAttr.cpp
>     cfe/trunk/test/SemaObjC/arc-property-lifetime.m
>
> Modified: cfe/trunk/include/clang/Basic/Attr.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=191016&r1=191015&r2=191016&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/Attr.td (original)
> +++ cfe/trunk/include/clang/Basic/Attr.td Thu Sep 19 12:18:55 2013
> @@ -571,7 +571,7 @@ def ObjCPreciseLifetime : InheritableAtt
>
>  def ObjCReturnsInnerPointer : InheritableAttr {
>    let Spellings = [GNU<"objc_returns_inner_pointer">];
> -  let Subjects = [ObjCMethod];
> +  let Subjects = [ObjCMethod, ObjCProperty];
>  }
>
>  def ObjCRequiresSuper : InheritableAttr {
>
> Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=191016&r1=191015&r2=191016&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Thu Sep 19 12:18:55 2013
> @@ -4145,6 +4145,11 @@ static void handleNSReturnsRetainedAttr(
>
>  static void handleObjCReturnsInnerPointerAttr(Sema &S, Decl *D,
>                                                const AttributeList &attr) {
> +  enum {
> +    EP_ObjCMethod = 1,
> +    EP_ObjCProperty
> +  };
> +
>    SourceLocation loc = attr.getLoc();
>    QualType resultType;
>
> @@ -4167,7 +4172,8 @@ static void handleObjCReturnsInnerPointe
>        (!resultType->isPointerType() || resultType->isObjCRetainableType())) {
>      S.Diag(D->getLocStart(), diag::warn_ns_attribute_wrong_return_type)
>        << SourceRange(loc)
> -    << attr.getName() << (method ? /*method*/ 1 : /*property*/ 2) << /*non-retainable pointer*/ 2;
> +    << attr.getName() << (method ? EP_ObjCMethod : EP_ObjCProperty)
> +    << /*non-retainable pointer*/ 2;
>
>      // Drop the attribute.
>      return;
>
> Modified: cfe/trunk/test/SemaObjC/arc-property-lifetime.m
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/arc-property-lifetime.m?rev=191016&r1=191015&r2=191016&view=diff
> ==============================================================================
> --- cfe/trunk/test/SemaObjC/arc-property-lifetime.m (original)
> +++ cfe/trunk/test/SemaObjC/arc-property-lifetime.m Thu Sep 19 12:18:55 2013
> @@ -174,6 +174,8 @@ void foo(Baz *f) {
>  {
>    const void * innerPointerIvar __attribute__((objc_returns_inner_pointer)); // expected-error {{'objc_returns_inner_pointer' attribute only applies to methods and properties}}
>  }
> + at property (readonly) Boom * NotInnerPointer __attribute__((objc_returns_inner_pointer)); // expected-warning {{'objc_returns_inner_pointer' attribute only applies to properties that return a non-retainable pointer}}
> +- (Boom *) NotInnerPointerMethod __attribute__((objc_returns_inner_pointer)); // expected-warning {{'objc_returns_inner_pointer' attribute only applies to methods that return a non-retainable pointer}}
>  @property (readonly) const void * innerPointer __attribute__((objc_returns_inner_pointer));
>  @end
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits



-- 
Alexander Potapenko
Software Engineer
Google Moscow



More information about the cfe-commits mailing list