summaryrefslogtreecommitdiffstats
path: root/clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-11-04 15:58:22 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-11-04 15:58:22 +0000
commitd2b911235479577c910efdfa7d5ac52046c2794d (patch)
treea08c66e868b0c72ea3d3fc61c203498b8c08fc35 /clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp
parentd8cdfbc9058fe97528dba4ca7f854045aa955cd5 (diff)
downloadbcm5719-llvm-d2b911235479577c910efdfa7d5ac52046c2794d.tar.gz
bcm5719-llvm-d2b911235479577c910efdfa7d5ac52046c2794d.zip
[arcmt] For GC, cleanup and turn -finalize to -dealloc.
llvm-svn: 143701
Diffstat (limited to 'clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp')
-rw-r--r--clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp b/clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp
index 394f8480e11..bf2517f1198 100644
--- a/clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp
+++ b/clang/lib/ARCMigrate/TransRetainReleaseDealloc.cpp
@@ -36,13 +36,15 @@ class RetainReleaseDeallocRemover :
ExprSet Removables;
llvm::OwningPtr<ParentMap> StmtMap;
- Selector DelegateSel;
+ Selector DelegateSel, FinalizeSel;
public:
RetainReleaseDeallocRemover(MigrationPass &pass)
: Body(0), Pass(pass) {
DelegateSel =
Pass.Ctx.Selectors.getNullarySelector(&Pass.Ctx.Idents.get("delegate"));
+ FinalizeSel =
+ Pass.Ctx.Selectors.getNullarySelector(&Pass.Ctx.Idents.get("finalize"));
}
void transformBody(Stmt *body) {
@@ -55,6 +57,8 @@ public:
bool VisitObjCMessageExpr(ObjCMessageExpr *E) {
switch (E->getMethodFamily()) {
default:
+ if (E->isInstanceMessage() && E->getSelector() == FinalizeSel)
+ break;
return true;
case OMF_autorelease:
if (isRemovable(E)) {
@@ -211,7 +215,7 @@ private:
} // anonymous namespace
-void trans::removeRetainReleaseDealloc(MigrationPass &pass) {
+void trans::removeRetainReleaseDeallocFinalize(MigrationPass &pass) {
BodyTransform<RetainReleaseDeallocRemover> trans(pass);
trans.TraverseDecl(pass.Ctx.getTranslationUnitDecl());
}
OpenPOWER on IntegriCloud