[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