summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-07-14 00:17:54 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-07-14 00:17:54 +0000
commite2e40b4dc7e2a49d54740262e21d4b0bbb0d94f3 (patch)
tree4f9dc6b4acbc12d5a564921958589f2899022e4a
parentfa181f4fdb5f357e4cbc76b3dc9cbf0baa46491e (diff)
downloadbcm5719-llvm-e2e40b4dc7e2a49d54740262e21d4b0bbb0d94f3.tar.gz
bcm5719-llvm-e2e40b4dc7e2a49d54740262e21d4b0bbb0d94f3.zip
[arcmt] Make sure migrating to ARC works even if '-fobjc-arc' is included in command-line flags. rdar://9567824
llvm-svn: 135115
-rw-r--r--clang/lib/ARCMigrate/ARCMT.cpp10
-rw-r--r--clang/test/ARCMT/with-arc-mode-check.m9
-rw-r--r--clang/test/ARCMT/with-arc-mode-migrate.m12
-rw-r--r--clang/test/ARCMT/with-arc-mode-migrate.m.result11
-rw-r--r--clang/test/ARCMT/with-arc-mode-modify.m13
-rw-r--r--clang/test/ARCMT/with-arc-mode-modify.m.result12
6 files changed, 66 insertions, 1 deletions
diff --git a/clang/lib/ARCMigrate/ARCMT.cpp b/clang/lib/ARCMigrate/ARCMT.cpp
index 73c8dbd6a4e..f1d947da677 100644
--- a/clang/lib/ARCMigrate/ARCMT.cpp
+++ b/clang/lib/ARCMigrate/ARCMT.cpp
@@ -262,6 +262,10 @@ bool arcmt::checkForManualIssues(CompilerInvocation &origCI,
DiagClient->EndSourceFile();
+ // If we are migrating code that gets the '-fobjc-arc' flag, make sure
+ // to remove it so that we don't get errors from normal compilation.
+ origCI.getLangOpts().ObjCAutoRefCount = false;
+
return capturedDiags.hasErrors();
}
@@ -302,8 +306,12 @@ static bool applyTransforms(CompilerInvocation &origCI,
if (outputDir.empty()) {
origCI.getLangOpts().ObjCAutoRefCount = true;
return migration.getRemapper().overwriteOriginal(*Diags);
- } else
+ } else {
+ // If we are migrating code that gets the '-fobjc-arc' flag, make sure
+ // to remove it so that we don't get errors from normal compilation.
+ origCI.getLangOpts().ObjCAutoRefCount = false;
return migration.getRemapper().flushToDisk(outputDir, *Diags);
+ }
}
bool arcmt::applyTransformations(CompilerInvocation &origCI,
diff --git a/clang/test/ARCMT/with-arc-mode-check.m b/clang/test/ARCMT/with-arc-mode-check.m
new file mode 100644
index 00000000000..c3146ef3b61
--- /dev/null
+++ b/clang/test/ARCMT/with-arc-mode-check.m
@@ -0,0 +1,9 @@
+// RUN: %clang_cc1 -arcmt-check -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -x objective-c %s
+
+@protocol NSObject
+- (oneway void)release;
+@end
+
+void test1(id p) {
+ [p release];
+}
diff --git a/clang/test/ARCMT/with-arc-mode-migrate.m b/clang/test/ARCMT/with-arc-mode-migrate.m
new file mode 100644
index 00000000000..3851bc77312
--- /dev/null
+++ b/clang/test/ARCMT/with-arc-mode-migrate.m
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -x objective-c %s.result
+// RUN: %clang_cc1 -arcmt-migrate -arcmt-migrate-directory %t -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc %s
+// RUN: c-arcmt-test -arcmt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
+// RUN: rm -rf %t
+
+@protocol NSObject
+- (oneway void)release;
+@end
+
+void test1(id p) {
+ [p release];
+}
diff --git a/clang/test/ARCMT/with-arc-mode-migrate.m.result b/clang/test/ARCMT/with-arc-mode-migrate.m.result
new file mode 100644
index 00000000000..c2222ae7b65
--- /dev/null
+++ b/clang/test/ARCMT/with-arc-mode-migrate.m.result
@@ -0,0 +1,11 @@
+// RUN: %clang_cc1 -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -x objective-c %s.result
+// RUN: %clang_cc1 -arcmt-migrate -arcmt-migrate-directory %t -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc %s
+// RUN: c-arcmt-test -arcmt-migrate-directory %t | arcmt-test -verify-transformed-files %s.result
+// RUN: rm -rf %t
+
+@protocol NSObject
+- (oneway void)release;
+@end
+
+void test1(id p) {
+}
diff --git a/clang/test/ARCMT/with-arc-mode-modify.m b/clang/test/ARCMT/with-arc-mode-modify.m
new file mode 100644
index 00000000000..17a398072e1
--- /dev/null
+++ b/clang/test/ARCMT/with-arc-mode-modify.m
@@ -0,0 +1,13 @@
+// RUN: %clang_cc1 -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -x objective-c %s.result
+// RUN: cp %s %t
+// RUN: %clang_cc1 -arcmt-modify -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -x objective-c %t
+// RUN: diff %t %s.result
+// RUN: rm %t
+
+@protocol NSObject
+- (oneway void)release;
+@end
+
+void test1(id p) {
+ [p release];
+}
diff --git a/clang/test/ARCMT/with-arc-mode-modify.m.result b/clang/test/ARCMT/with-arc-mode-modify.m.result
new file mode 100644
index 00000000000..97c5128cd95
--- /dev/null
+++ b/clang/test/ARCMT/with-arc-mode-modify.m.result
@@ -0,0 +1,12 @@
+// RUN: %clang_cc1 -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -x objective-c %s.result
+// RUN: cp %s %t
+// RUN: %clang_cc1 -arcmt-modify -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -x objective-c %t
+// RUN: diff %t %s.result
+// RUN: rm %t
+
+@protocol NSObject
+- (oneway void)release;
+@end
+
+void test1(id p) {
+}
OpenPOWER on IntegriCloud