[cfe-commits] r104296 - in /cfe/trunk: lib/Sema/SemaDeclCXX.cpp test/CodeGenObjC/objc-gc-aggr-assign.m

Douglas Gregor dgregor at apple.com
Thu May 20 16:39:36 PDT 2010


On May 20, 2010, at 4:34 PM, Fariborz Jahanian wrote:

> Author: fjahanian
> Date: Thu May 20 18:34:56 2010
> New Revision: 104296
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=104296&view=rev
> Log:
> Generate objc_memmove_collectable write-barrier for 
> classes whose base class have GC'able object pointers.
> 
> 
> Modified:
>    cfe/trunk/lib/Sema/SemaDeclCXX.cpp
>    cfe/trunk/test/CodeGenObjC/objc-gc-aggr-assign.m
> 
> Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=104296&r1=104295&r2=104296&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Thu May 20 18:34:56 2010
> @@ -622,7 +622,13 @@
>     QualType NewBaseType
>       = Context.getCanonicalType(Bases[idx]->getType());
>     NewBaseType = NewBaseType.getLocalUnqualifiedType();
> -
> +    if (!Class->hasObjectMember()) {
> +      if (const RecordType *FDTTy = 
> +            NewBaseType.getTypePtr()->getAs<RecordType>())
> +        if (FDTTy->getDecl()->hasObjectMember())
> +          Class->setHasObjectMember(true);
> +    }
> +    

Excellent, thanks!

>     if (KnownBaseTypes[NewBaseType]) {
>       // C++ [class.mi]p3:
>       //   A class shall not be specified as a direct base class of a
> 
> Modified: cfe/trunk/test/CodeGenObjC/objc-gc-aggr-assign.m
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/objc-gc-aggr-assign.m?rev=104296&r1=104295&r2=104296&view=diff
> ==============================================================================
> --- cfe/trunk/test/CodeGenObjC/objc-gc-aggr-assign.m (original)
> +++ cfe/trunk/test/CodeGenObjC/objc-gc-aggr-assign.m Thu May 20 18:34:56 2010
> @@ -1,7 +1,7 @@
> // RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o %t %s
> // RUN: grep objc_memmove_collectable %t | grep call | count 3
> // RUN: %clang_cc1 -x objective-c++ -triple x86_64-apple-darwin10 -fobjc-gc -emit-llvm -o %t %s
> -// RUN: grep objc_memmove_collectable %t | grep call | count 3
> +// RUN: grep objc_memmove_collectable %t | grep call | count 4

Wouldn't FileCheck be easier?

	- Doug



More information about the cfe-commits mailing list