Skip to content

Commit

Permalink
add scafolding to play around with and bring up the code rewriter.
Browse files Browse the repository at this point in the history
llvm-svn: 42855
  • Loading branch information
lattner committed Oct 11, 2007
1 parent 5039ac7 commit e99c832
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 0 deletions.
1 change: 1 addition & 0 deletions clang/Driver/ASTConsumers.h
Expand Up @@ -27,6 +27,7 @@ ASTConsumer *CreateLiveVarAnalyzer();
ASTConsumer *CreateDeadStoreChecker(Diagnostic &Diags);
ASTConsumer *CreateUnitValsChecker(Diagnostic &Diags);
ASTConsumer *CreateLLVMEmitter(Diagnostic &Diags);
ASTConsumer *CreateCodeRewriterTest();

} // end clang namespace

Expand Down
43 changes: 43 additions & 0 deletions clang/Driver/RewriteTest.cpp
@@ -0,0 +1,43 @@
//===--- RewriteTest.cpp - Playground for the code rewriter ---------------===//
//
// The LLVM Compiler Infrastructure
//
// This file was developed by Chris Lattner and is distributed under the
// University of Illinois Open Source License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// Hacks and fun related to the code rewriter.
//
//===----------------------------------------------------------------------===//

#include "ASTConsumers.h"
#include "clang/AST/AST.h"
#include "clang/AST/ASTConsumer.h"

using namespace clang;


namespace {
class ASTViewer : public ASTConsumer {
SourceManager *SM;
public:
void Initialize(ASTContext &Context, unsigned MainFileID) {
SM = &Context.SourceMgr;
}

virtual void HandleTopLevelDecl(Decl *D);
};
}

ASTConsumer *clang::CreateCodeRewriterTest() { return new ASTViewer(); }




void ASTViewer::HandleTopLevelDecl(Decl *D) {
if (NamedDecl *ND = dyn_cast<NamedDecl>(D))
if (ND->getName())
printf("%s\n", ND->getName());

}
7 changes: 7 additions & 0 deletions clang/Driver/clang.cpp
Expand Up @@ -49,6 +49,7 @@ static llvm::cl::opt<bool>
Stats("stats", llvm::cl::desc("Print performance metrics and statistics"));

enum ProgActions {
RewriteTest, // Rewriter testing stuff.
EmitLLVM, // Emit a .ll file.
ASTPrint, // Parse ASTs and print them.
ASTDump, // Parse ASTs and dump them.
Expand Down Expand Up @@ -101,6 +102,8 @@ ProgAction(llvm::cl::desc("Choose output type:"), llvm::cl::ZeroOrMore,
"Flag warnings of uses of unitialized variables."),
clEnumValN(EmitLLVM, "emit-llvm",
"Build ASTs then convert to LLVM, emit .ll file"),
clEnumValN(RewriteTest, "rewrite-test",
"Playground for the code rewriter"),
clEnumValEnd));

static llvm::cl::opt<bool>
Expand Down Expand Up @@ -796,6 +799,10 @@ static void ProcessInputFile(Preprocessor &PP, unsigned MainFileID,
case EmitLLVM:
Consumer = CreateLLVMEmitter(PP.getDiagnostics());
break;

case RewriteTest:
Consumer = CreateCodeRewriterTest();
break;
}

if (Consumer) {
Expand Down

0 comments on commit e99c832

Please sign in to comment.