]> granicus.if.org Git - clang/commitdiff
arc migrator: Added an option to the migrator
authorFariborz Jahanian <fjahanian@apple.com>
Thu, 26 Jan 2012 00:08:04 +0000 (00:08 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Thu, 26 Jan 2012 00:08:04 +0000 (00:08 +0000)
unused yet.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@149001 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/CC1Options.td
include/clang/Frontend/MigratorOptions.h
lib/ARCMigrate/ARCMT.cpp
lib/ARCMigrate/Internals.h

index 86457d9e7842f82753b3677bbea34afcb6b724f3..1125ddd60339d25d83d276d0cca95d110a88166e 100644 (file)
@@ -106,6 +106,9 @@ def analyzer_checker_help : Flag<"-analyzer-checker-help">,
 def migrator_no_nsalloc_error : Flag<"-no-ns-alloc-error">,
   HelpText<"Do not error on use of NSAllocateCollectable/NSReallocateCollectable">;
 
+def migrator_no_finalize_removal : Flag<"-no-finalize-removal">,
+  HelpText<"Do not remove finalize method in gc mode">;
+
 //===----------------------------------------------------------------------===//
 // CodeGen Options
 //===----------------------------------------------------------------------===//
index 23263d7aa039511554873b9717ffd307c3d33865..f9554e4a61fd71cb9a199e93d4fe1f24827c2346 100644 (file)
@@ -20,8 +20,10 @@ namespace clang {
 class MigratorOptions {
 public:
   unsigned NoNSAllocReallocError : 1;
+  unsigned NoFinalizeRemoval : 1;
   MigratorOptions() {
     NoNSAllocReallocError = 0;
+    NoFinalizeRemoval = 0;
   }
 };
 
index 09752f0d612c8a0dc26985e366e50abe72614553..cd4835ef3915feb33aef4dfe81f7a4c36a96f3f6 100644 (file)
@@ -230,6 +230,7 @@ bool arcmt::checkForManualIssues(CompilerInvocation &origCI,
 
   LangOptions::GCMode OrigGCMode = origCI.getLangOpts()->getGC();
   bool NoNSAllocReallocError = origCI.getMigratorOpts().NoNSAllocReallocError;
+  bool NoFinalizeRemoval = origCI.getMigratorOpts().NoFinalizeRemoval;
 
   std::vector<TransformFn> transforms = arcmt::getAllTransformations(OrigGCMode);
   assert(!transforms.empty());
@@ -294,6 +295,7 @@ bool arcmt::checkForManualIssues(CompilerInvocation &origCI,
   TransformActions testAct(*Diags, capturedDiags, Ctx, Unit->getPreprocessor());
   MigrationPass pass(Ctx, OrigGCMode, Unit->getSema(), testAct, ARCMTMacroLocs);
   pass.setNSAllocReallocError(NoNSAllocReallocError);
+  pass.setNoFinalizeRemoval(NoFinalizeRemoval);
 
   for (unsigned i=0, e = transforms.size(); i != e; ++i)
     transforms[i](pass);
index 78bf341fe6b33f4c09e881cdda708a10fafe6be0..59177c483ea0c1b73de6c63fe97ebd0a443d6387 100644 (file)
@@ -155,6 +155,8 @@ public:
   bool isGCMigration() const { return OrigGCMode != LangOptions::NonGC; }
   bool noNSAllocReallocError() const { return MigOptions.NoNSAllocReallocError; }
   void setNSAllocReallocError(bool val) { MigOptions.NoNSAllocReallocError = val; }
+  bool noFinalizeRemoval() const { return MigOptions.NoFinalizeRemoval; }
+  void setNoFinalizeRemoval(bool val) {MigOptions.NoFinalizeRemoval = val; }
 };
 
 static inline StringRef getARCMTMacroName() {