objc rewriter: start supporting modern objective-c abi

in objective-c rewriter. wip.

llvm-svn: 149989
This commit is contained in:
Fariborz Jahanian
2012-02-07 17:11:38 +00:00
parent b6c6a58366
commit 1167190344
5 changed files with 6115 additions and 7 deletions

View File

@@ -31,6 +31,11 @@ ASTConsumer *CreateObjCRewriter(const std::string &InFile,
DiagnosticsEngine &Diags,
const LangOptions &LOpts,
bool SilenceRewriteMacroWarning);
ASTConsumer *CreateModernObjCRewriter(const std::string &InFile,
raw_ostream *OS,
DiagnosticsEngine &Diags,
const LangOptions &LOpts,
bool SilenceRewriteMacroWarning);
/// CreateHTMLPrinter - Create an AST consumer which rewrites source code to
/// HTML with syntax highlighting suitable for viewing in a web-browser.

View File

@@ -7,6 +7,7 @@ add_clang_library(clangRewrite
HTMLPrint.cpp
HTMLRewrite.cpp
RewriteMacros.cpp
RewriteModernObjC.cpp
RewriteObjC.cpp
RewriteRope.cpp
RewriteTest.cpp

View File

@@ -154,10 +154,15 @@ bool FixItRecompile::BeginInvocation(CompilerInstance &CI) {
ASTConsumer *RewriteObjCAction::CreateASTConsumer(CompilerInstance &CI,
StringRef InFile) {
if (raw_ostream *OS = CI.createDefaultOutputFile(false, InFile, "cpp"))
if (raw_ostream *OS = CI.createDefaultOutputFile(false, InFile, "cpp")) {
if (CI.getLangOpts().ObjCNonFragileABI)
return CreateModernObjCRewriter(InFile, OS,
CI.getDiagnostics(), CI.getLangOpts(),
CI.getDiagnosticOpts().NoRewriteMacros);
return CreateObjCRewriter(InFile, OS,
CI.getDiagnostics(), CI.getLangOpts(),
CI.getDiagnosticOpts().NoRewriteMacros);
}
return 0;
}

File diff suppressed because it is too large Load Diff

View File

@@ -590,12 +590,7 @@ ASTConsumer *clang::CreateObjCRewriter(const std::string& InFile,
DiagnosticsEngine &Diags,
const LangOptions &LOpts,
bool SilenceRewriteMacroWarning) {
if (true /*!LOpts.ObjCNonFragileABI*/)
return new RewriteObjCFragileABI(InFile, OS, Diags, LOpts, SilenceRewriteMacroWarning);
else {
assert(false && "objective-C rewriter for nonfragile ABI = NYI");
return 0;
}
return new RewriteObjCFragileABI(InFile, OS, Diags, LOpts, SilenceRewriteMacroWarning);
}
void RewriteObjC::InitializeCommon(ASTContext &context) {