diff --git a/test/ARCMT/with-working-dir.m b/test/ARCMT/with-working-dir.m
deleted file mode 100644
index 84db102..0000000
--- a/test/ARCMT/with-working-dir.m
+++ /dev/null
@@ -1,47 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fobjc-nonfragile-abi -working-directory %S with-working-dir.m > %t
-// RUN: diff %t %s.result
-
-typedef int BOOL;
-id IhaveSideEffect();
-
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
-- (id)something;
-@end
-
-@interface NSObject <NSObject> {}
-@end
-
-@interface Foo : NSObject {
-  id bar;
-}
-@property (retain) id bar;
--(id)test:(id)obj;
-@end
-
-@implementation Foo
-
-@synthesize bar;
-
--(id)test:(id)obj {
-  id x = self.bar;
-  [x retain];
-  self.bar = obj;
-  if (obj)
-    [obj retain];
-
-  [IhaveSideEffect() retain];
-
-  [[self something] retain];
-
-  [[self retain] something];
-
-  // do stuff with x;
-  [x release];
-  return [self retain];
-}
-  
-@end
diff --git a/test/ARCMT/with-working-dir.m.result b/test/ARCMT/with-working-dir.m.result
deleted file mode 100644
index 7f0906b..0000000
--- a/test/ARCMT/with-working-dir.m.result
+++ /dev/null
@@ -1,43 +0,0 @@
-// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fobjc-nonfragile-abi -fsyntax-only -fobjc-arc -x objective-c %s.result
-// RUN: arcmt-test --args -triple x86_64-apple-macosx10.6 -fobjc-nonfragile-abi -working-directory %S with-working-dir.m > %t
-// RUN: diff %t %s.result
-
-typedef int BOOL;
-id IhaveSideEffect();
-
-@protocol NSObject
-- (BOOL)isEqual:(id)object;
-- (id)retain;
-- (oneway void)release;
-- (id)something;
-@end
-
-@interface NSObject <NSObject> {}
-@end
-
-@interface Foo : NSObject {
-  id bar;
-}
-@property (retain) id bar;
--(id)test:(id)obj;
-@end
-
-@implementation Foo
-
-@synthesize bar;
-
--(id)test:(id)obj {
-  id x = self.bar;
-  self.bar = obj;
-
-  IhaveSideEffect();
-
-  [self something];
-
-  [self something];
-
-  // do stuff with x;
-  return self;
-}
-  
-@end
