summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-07-08 01:18:33 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-07-08 01:18:33 +0000
commit5f21d2f69ab3cf891546f9f8eb13f5efa8653329 (patch)
tree84c070b3f5d372159798740a4c97ad35880328e6 /clang/lib/Sema/SemaDecl.cpp
parent2a7deb64c0fe77947bed52fc7044d2b1c0b4ab5b (diff)
downloadbcm5719-llvm-5f21d2f69ab3cf891546f9f8eb13f5efa8653329.tar.gz
bcm5719-llvm-5f21d2f69ab3cf891546f9f8eb13f5efa8653329.zip
Implemented memmove_collectable API for Next runtime
when struct variables with GC'able members are copied into. Will provide a test case later. llvm-svn: 74984
Diffstat (limited to 'clang/lib/Sema/SemaDecl.cpp')
-rw-r--r--clang/lib/Sema/SemaDecl.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index 290ab5d708f..1a8cec11b72 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -4238,6 +4238,8 @@ void Sema::ActOnFields(Scope* S,
}
}
}
+ if (Record && FDTTy->getDecl()->hasObjectMember())
+ Record->setHasObjectMember(true);
} else if (FDTy->isObjCInterfaceType()) {
/// A field cannot be an Objective-c object
Diag(FD->getLocation(), diag::err_statically_allocated_object);
@@ -4245,6 +4247,12 @@ void Sema::ActOnFields(Scope* S,
EnclosingDecl->setInvalidDecl();
continue;
}
+ else if (getLangOptions().ObjC1 &&
+ getLangOptions().getGCMode() != LangOptions::NonGC &&
+ Record &&
+ (Context.isObjCObjectPointerType(FD->getType()) ||
+ FD->getType().isObjCGCStrong()))
+ Record->setHasObjectMember(true);
// Keep track of the number of named members.
if (FD->getIdentifier())
++NumNamedMembers;
OpenPOWER on IntegriCloud