Hi Argyrios, This set of ARCMT tests are failing on the ARM builder http://google1.osuosl.org:8011/builders/clang-native-arm-cortex-a9 builder:
Clang :: ARCMT/alloc-with-zone-check.m Clang :: ARCMT/alloc-with-zone.m Clang :: ARCMT/atautorelease-2.m Clang :: ARCMT/atautorelease-3.m Clang :: ARCMT/atautorelease-check.m Clang :: ARCMT/atautorelease.m Clang :: ARCMT/autoreleases.m Clang :: ARCMT/checking.m Clang :: ARCMT/cxx-checking.mm Clang :: ARCMT/dealloc.m Clang :: ARCMT/nonobjc-to-objc-cast-2.m Clang :: ARCMT/init.m Clang :: ARCMT/nonobjc-to-objc-cast.m Clang :: ARCMT/releases-driver.m Clang :: ARCMT/releases.m Clang :: ARCMT/remove-dealloc-method.m Clang :: ARCMT/remove-dealloc-zerouts.m Clang :: ARCMT/remove-statements.m Clang :: ARCMT/retains.m Clang :: ARCMT/rewrite-block-var.m Clang :: ARCMT/safe-arc-assign.m Clang :: ARCMT/with-working-dir.m If they are target-specific, please declare them as such. Tnanks Galina On Fri, Jun 17, 2011 at 5:53 PM, Argyrios Kyrtzidis <[email protected]> wrote: > Author: akirtzidis > Date: Fri Jun 17 19:53:41 2011 > New Revision: 133323 > > URL: http://llvm.org/viewvc/llvm-project?rev=133323&view=rev > Log: > [arcmt] Fix the ARC migrator. -arcmt-modify requires running before the > initialization of SourceManager > because it is going to modify the input file. > > Added: > cfe/trunk/test/ARCMT/releases-driver.m > cfe/trunk/test/ARCMT/releases-driver.m.result > Modified: > cfe/trunk/include/clang/ARCMigrate/ARCMTActions.h > cfe/trunk/include/clang/Frontend/FrontendAction.h > cfe/trunk/lib/ARCMigrate/ARCMT.cpp > cfe/trunk/lib/ARCMigrate/ARCMTActions.cpp > cfe/trunk/lib/ARCMigrate/Internals.h > cfe/trunk/lib/Frontend/FrontendAction.cpp > cfe/trunk/test/ARCMT/alloc-with-zone-check.m > cfe/trunk/test/ARCMT/atautorelease-check.m > cfe/trunk/test/ARCMT/checking.m > cfe/trunk/test/ARCMT/cxx-checking.mm > cfe/trunk/test/ARCMT/nonobjc-to-objc-cast-2.m > cfe/trunk/tools/arcmt-test/arcmt-test.cpp > > Modified: cfe/trunk/include/clang/ARCMigrate/ARCMTActions.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/ARCMigrate/ARCMTActions.h?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/include/clang/ARCMigrate/ARCMTActions.h (original) > +++ cfe/trunk/include/clang/ARCMigrate/ARCMTActions.h Fri Jun 17 19:53:41 2011 > @@ -18,7 +18,7 @@ > > class CheckAction : public WrapperFrontendAction { > protected: > - virtual void ExecuteAction(); > + virtual bool BeginInvocation(CompilerInstance &CI); > > public: > CheckAction(FrontendAction *WrappedAction); > @@ -26,7 +26,7 @@ > > class TransformationAction : public WrapperFrontendAction { > protected: > - virtual void ExecuteAction(); > + virtual bool BeginInvocation(CompilerInstance &CI); > > public: > TransformationAction(FrontendAction *WrappedAction); > > Modified: cfe/trunk/include/clang/Frontend/FrontendAction.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/FrontendAction.h?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/include/clang/Frontend/FrontendAction.h (original) > +++ cfe/trunk/include/clang/Frontend/FrontendAction.h Fri Jun 17 19:53:41 2011 > @@ -78,6 +78,14 @@ > virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, > llvm::StringRef InFile) = 0; > > + /// \brief Callback before starting processing a single input, giving the > + /// opportunity to modify the CompilerInvocation or do some other action > + /// before BeginSourceFileAction is called. > + /// > + /// \return True on success; on failure \see BeginSourceFileAction() and > + /// ExecutionAction() and EndSourceFileAction() will not be called. > + virtual bool BeginInvocation(CompilerInstance &CI) { return true; } > + > /// BeginSourceFileAction - Callback at the start of processing a single > /// input. > /// > @@ -265,6 +273,7 @@ > protected: > virtual ASTConsumer *CreateASTConsumer(CompilerInstance &CI, > llvm::StringRef InFile); > + virtual bool BeginInvocation(CompilerInstance &CI); > virtual bool BeginSourceFileAction(CompilerInstance &CI, > llvm::StringRef Filename); > virtual void ExecuteAction(); > > Modified: cfe/trunk/lib/ARCMigrate/ARCMT.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/ARCMT.cpp?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/lib/ARCMigrate/ARCMT.cpp (original) > +++ cfe/trunk/lib/ARCMigrate/ARCMT.cpp Fri Jun 17 19:53:41 2011 > @@ -79,6 +79,14 @@ > Diags.Report(*I); > } > > +bool CapturedDiagList::hasErrors() const { > + for (ListTy::const_iterator I = List.begin(), E = List.end(); I != E; ++I) > + if (I->getLevel() >= Diagnostic::Error) > + return true; > + > + return false; > +} > + > namespace { > > class CaptureDiagnosticClient : public DiagnosticClient { > @@ -236,7 +244,7 @@ > > DiagClient->EndSourceFile(); > > - return Diags->getClient()->getNumErrors() > 0; > + return capturedDiags.hasErrors(); > } > > //===----------------------------------------------------------------------===// > > Modified: cfe/trunk/lib/ARCMigrate/ARCMTActions.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/ARCMTActions.cpp?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/lib/ARCMigrate/ARCMTActions.cpp (original) > +++ cfe/trunk/lib/ARCMigrate/ARCMTActions.cpp Fri Jun 17 19:53:41 2011 > @@ -14,29 +14,24 @@ > using namespace clang; > using namespace arcmt; > > -void CheckAction::ExecuteAction() { > - CompilerInstance &CI = getCompilerInstance(); > +bool CheckAction::BeginInvocation(CompilerInstance &CI) { > if (arcmt::checkForManualIssues(CI.getInvocation(), getCurrentFile(), > getCurrentFileKind(), > CI.getDiagnostics().getClient())) > - return; > + return false; // errors, stop the action. > > // We only want to see warnings reported from arcmt::checkForManualIssues. > CI.getDiagnostics().setIgnoreAllWarnings(true); > - WrapperFrontendAction::ExecuteAction(); > + return true; > } > > CheckAction::CheckAction(FrontendAction *WrappedAction) > : WrapperFrontendAction(WrappedAction) {} > > -void TransformationAction::ExecuteAction() { > - CompilerInstance &CI = getCompilerInstance(); > - if (arcmt::applyTransformations(CI.getInvocation(), getCurrentFile(), > +bool TransformationAction::BeginInvocation(CompilerInstance &CI) { > + return !arcmt::applyTransformations(CI.getInvocation(), getCurrentFile(), > getCurrentFileKind(), > - CI.getDiagnostics().getClient())) > - return; > - > - WrapperFrontendAction::ExecuteAction(); > + CI.getDiagnostics().getClient()); > } > > TransformationAction::TransformationAction(FrontendAction *WrappedAction) > > Modified: cfe/trunk/lib/ARCMigrate/Internals.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ARCMigrate/Internals.h?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/lib/ARCMigrate/Internals.h (original) > +++ cfe/trunk/lib/ARCMigrate/Internals.h Fri Jun 17 19:53:41 2011 > @@ -30,6 +30,8 @@ > bool hasDiagnostic(llvm::ArrayRef<unsigned> IDs, SourceRange range) const; > > void reportDiagnostics(Diagnostic &diags) const; > + > + bool hasErrors() const; > }; > > class TransformActions { > > Modified: cfe/trunk/lib/Frontend/FrontendAction.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/FrontendAction.cpp?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/lib/Frontend/FrontendAction.cpp (original) > +++ cfe/trunk/lib/Frontend/FrontendAction.cpp Fri Jun 17 19:53:41 2011 > @@ -130,6 +130,9 @@ > setCurrentFile(Filename, InputKind); > setCompilerInstance(&CI); > > + if (!BeginInvocation(CI)) > + goto failure; > + > // AST files follow a very different path, since they share objects via the > // AST unit. > if (InputKind == IK_AST) { > @@ -386,8 +389,13 @@ > llvm::StringRef InFile) > { > return WrappedAction->CreateASTConsumer(CI, InFile); > } > +bool WrapperFrontendAction::BeginInvocation(CompilerInstance &CI) { > + return WrappedAction->BeginInvocation(CI); > +} > bool WrapperFrontendAction::BeginSourceFileAction(CompilerInstance &CI, > llvm::StringRef Filename) { > + WrappedAction->setCurrentFile(getCurrentFile(), getCurrentFileKind()); > + WrappedAction->setCompilerInstance(&CI); > return WrappedAction->BeginSourceFileAction(CI, Filename); > } > void WrapperFrontendAction::ExecuteAction() { > > Modified: cfe/trunk/test/ARCMT/alloc-with-zone-check.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/alloc-with-zone-check.m?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/test/ARCMT/alloc-with-zone-check.m (original) > +++ cfe/trunk/test/ARCMT/alloc-with-zone-check.m Fri Jun 17 19:53:41 2011 > @@ -1,4 +1,4 @@ > -// RUN: arcmt-test -check-only -verify --args %s > +// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 > -fobjc-nonfragile-abi %s > > #if __has_feature(objc_arr) > #define NS_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not > available in automatic reference counting mode"))) > > Modified: cfe/trunk/test/ARCMT/atautorelease-check.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/atautorelease-check.m?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/test/ARCMT/atautorelease-check.m (original) > +++ cfe/trunk/test/ARCMT/atautorelease-check.m Fri Jun 17 19:53:41 2011 > @@ -1,4 +1,4 @@ > -// RUN: arcmt-test -check-only -verify --args %s > +// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 > -fobjc-nonfragile-abi %s > > #if __has_feature(objc_arr) > #define NS_AUTOMATED_REFCOUNT_UNAVAILABLE __attribute__((unavailable("not > available in automatic reference counting mode"))) > > Modified: cfe/trunk/test/ARCMT/checking.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/checking.m?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/test/ARCMT/checking.m (original) > +++ cfe/trunk/test/ARCMT/checking.m Fri Jun 17 19:53:41 2011 > @@ -1,4 +1,4 @@ > -// RUN: arcmt-test -check-only -verify --args %s > +// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 > -fobjc-nonfragile-abi %s > > #include "Common.h" > > > Modified: cfe/trunk/test/ARCMT/cxx-checking.mm > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/cxx-checking.mm?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/test/ARCMT/cxx-checking.mm (original) > +++ cfe/trunk/test/ARCMT/cxx-checking.mm Fri Jun 17 19:53:41 2011 > @@ -1,4 +1,4 @@ > -// RUN: arcmt-test -check-only -verify --args -triple x86_64-apple-darwin10 > -fobjc-nonfragile-abi -fsyntax-only -fblocks -Warc-abi %s > +// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 > -fobjc-nonfragile-abi -fsyntax-only -fblocks -Warc-abi %s > > // Classes that have an Objective-C object pointer. > struct HasObjectMember0 { // expected-warning{{'HasObjectMember0' cannot be > shared between ARC and non-ARC code; add a copy constructor, a copy > assignment operator, and a destructor to make it ABI-compatible}} > > Modified: cfe/trunk/test/ARCMT/nonobjc-to-objc-cast-2.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/nonobjc-to-objc-cast-2.m?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/test/ARCMT/nonobjc-to-objc-cast-2.m (original) > +++ cfe/trunk/test/ARCMT/nonobjc-to-objc-cast-2.m Fri Jun 17 19:53:41 2011 > @@ -1,4 +1,4 @@ > -// RUN: arcmt-test -check-only -verify --args %s > +// RUN: %clang_cc1 -arcmt-check -verify -triple x86_64-apple-darwin10 > -fobjc-nonfragile-abi %s > > typedef int BOOL; > typedef const struct __CFString * CFStringRef; > > Added: cfe/trunk/test/ARCMT/releases-driver.m > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/releases-driver.m?rev=133323&view=auto > ============================================================================== > --- cfe/trunk/test/ARCMT/releases-driver.m (added) > +++ cfe/trunk/test/ARCMT/releases-driver.m Fri Jun 17 19:53:41 2011 > @@ -0,0 +1,68 @@ > +// RUN: %clang_cc1 -fobjc-nonfragile-abi -fblocks -fsyntax-only -fobjc-arc > -x objective-c %s.result > +// RUN: cp %s %t > +// RUN: %clang_cc1 -arcmt-modify -triple x86_64-apple-macosx10.6 > -fobjc-nonfragile-abi -x objective-c %t > +// RUN: diff %t %s.result > +// RUN: rm %t > + > +typedef int BOOL; > + > +id IhaveSideEffect(); > + > +@protocol NSObject > +- (BOOL)isEqual:(id)object; > +- (id)retain; > +- (oneway void)release; > +@end > + > +@interface NSObject <NSObject> {} > +@end > + > +@interface Foo : NSObject { > + id bar; > +} > +@property (retain) id bar; > +-(void)test:(id)obj; > +@end > + > +@implementation Foo > + > +@synthesize bar; > + > +-(void)test:(id)obj { > + id x = self.bar; > + [x retain]; > + self.bar = obj; > + // do stuff with x; > + [x release]; > + > + [IhaveSideEffect() release]; > + > + [x release], x = 0; > +} > + > +@end > + > +void func(Foo *p) { > + [p release]; > + (([p release])); > +} > + > +@interface Baz { > + id <NSObject> _foo; > +} > +@end > + > +@implementation Baz > +- dealloc { > + [_foo release]; > + return 0; > +} > +@end > + > +#define RELEASE_MACRO(x) [x release] > +#define RELEASE_MACRO2(x) RELEASE_MACRO(x) > + > +void test2(id p) { > + RELEASE_MACRO(p); > + RELEASE_MACRO2(p); > +} > > Added: cfe/trunk/test/ARCMT/releases-driver.m.result > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/test/ARCMT/releases-driver.m.result?rev=133323&view=auto > ============================================================================== > --- cfe/trunk/test/ARCMT/releases-driver.m.result (added) > +++ cfe/trunk/test/ARCMT/releases-driver.m.result Fri Jun 17 19:53:41 2011 > @@ -0,0 +1,61 @@ > +// RUN: %clang_cc1 -fobjc-nonfragile-abi -fblocks -fsyntax-only -fobjc-arc > -x objective-c %s.result > +// RUN: cp %s %t > +// RUN: %clang_cc1 -arcmt-modify -triple x86_64-apple-macosx10.6 > -fobjc-nonfragile-abi -x objective-c %t > +// RUN: diff %t %s.result > +// RUN: rm %t > + > +typedef int BOOL; > + > +id IhaveSideEffect(); > + > +@protocol NSObject > +- (BOOL)isEqual:(id)object; > +- (id)retain; > +- (oneway void)release; > +@end > + > +@interface NSObject <NSObject> {} > +@end > + > +@interface Foo : NSObject { > + id bar; > +} > +@property (retain) id bar; > +-(void)test:(id)obj; > +@end > + > +@implementation Foo > + > +@synthesize bar; > + > +-(void)test:(id)obj { > + id x = self.bar; > + self.bar = obj; > + // do stuff with x; > + > + IhaveSideEffect(); > + > + x = 0; > +} > + > +@end > + > +void func(Foo *p) { > +} > + > +@interface Baz { > + id <NSObject> _foo; > +} > +@end > + > +@implementation Baz > +- dealloc { > + return 0; > +} > +@end > + > +#define RELEASE_MACRO(x) [x release] > +#define RELEASE_MACRO2(x) RELEASE_MACRO(x) > + > +void test2(id p) { > +} > > Modified: cfe/trunk/tools/arcmt-test/arcmt-test.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/arcmt-test/arcmt-test.cpp?rev=133323&r1=133322&r2=133323&view=diff > ============================================================================== > --- cfe/trunk/tools/arcmt-test/arcmt-test.cpp (original) > +++ cfe/trunk/tools/arcmt-test/arcmt-test.cpp Fri Jun 17 19:53:41 2011 > @@ -111,10 +111,11 @@ > if (!CI.getLangOpts().ObjC1) > return false; > > - return arcmt::checkForManualIssues(CI, > - CI.getFrontendOpts().Inputs[0].second, > - CI.getFrontendOpts().Inputs[0].first, > - Diags->getClient()); > + arcmt::checkForManualIssues(CI, > + CI.getFrontendOpts().Inputs[0].second, > + CI.getFrontendOpts().Inputs[0].first, > + Diags->getClient()); > + return Diags->getClient()->getNumErrors() > 0; > } > > static void printResult(FileRemapper &remapper, llvm::raw_ostream &OS) { > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
