diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2010-09-17 07:35:16 +0000 | 
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2010-09-17 07:35:16 +0000 | 
| commit | 195fa00399bde43f072b7f33d850da55a87f400d (patch) | |
| tree | 462828cfd3de7c1ed53739a9c4de494dfcb22612 | |
| parent | 386fe51f64f77d8f3ef361cc48c854b78a338da6 (diff) | |
| download | bcm5719-llvm-195fa00399bde43f072b7f33d850da55a87f400d.tar.gz bcm5719-llvm-195fa00399bde43f072b7f33d850da55a87f400d.zip | |
IRgen: Change CodeGenPasses to be a PassManager, so it can have CallGraphSCC or
Module. Patch by Mike Gist!
llvm-svn: 114171
| -rw-r--r-- | clang/lib/CodeGen/BackendUtil.cpp | 16 | 
1 files changed, 5 insertions, 11 deletions
| diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp index 69efe438cc9..82b4b50b6ac 100644 --- a/clang/lib/CodeGen/BackendUtil.cpp +++ b/clang/lib/CodeGen/BackendUtil.cpp @@ -42,14 +42,14 @@ class EmitAssemblyHelper {    Timer CodeGenerationTime; -  mutable FunctionPassManager *CodeGenPasses; +  mutable PassManager *CodeGenPasses;    mutable PassManager *PerModulePasses;    mutable FunctionPassManager *PerFunctionPasses;  private: -  FunctionPassManager *getCodeGenPasses() const { +  PassManager *getCodeGenPasses() const {      if (!CodeGenPasses) { -      CodeGenPasses = new FunctionPassManager(TheModule); +      CodeGenPasses = new PassManager();        CodeGenPasses->add(new TargetData(TheModule));      }      return CodeGenPasses; @@ -248,7 +248,7 @@ bool EmitAssemblyHelper::AddEmitPasses(BackendAction Action,      TM->setMCRelaxAll(true);    // Create the code generator passes. -  FunctionPassManager *PM = getCodeGenPasses(); +  PassManager *PM = getCodeGenPasses();    CodeGenOpt::Level OptLevel = CodeGenOpt::Default;    switch (CodeGenOpts.OptimizationLevel) { @@ -320,13 +320,7 @@ void EmitAssemblyHelper::EmitAssembly(BackendAction Action, raw_ostream *OS) {    if (CodeGenPasses) {      PrettyStackTraceString CrashInfo("Code generation"); - -    CodeGenPasses->doInitialization(); -    for (Module::iterator I = TheModule->begin(), -           E = TheModule->end(); I != E; ++I) -      if (!I->isDeclaration()) -        CodeGenPasses->run(*I); -    CodeGenPasses->doFinalization(); +    CodeGenPasses->run(*TheModule);    }  } | 

