diff options
Diffstat (limited to 'clang/tools/driver')
-rw-r--r-- | clang/tools/driver/CMakeLists.txt | 8 | ||||
-rw-r--r-- | clang/tools/driver/cc1_main.cpp | 11 |
2 files changed, 19 insertions, 0 deletions
diff --git a/clang/tools/driver/CMakeLists.txt b/clang/tools/driver/CMakeLists.txt index 9442ba65da9..f60162f5e10 100644 --- a/clang/tools/driver/CMakeLists.txt +++ b/clang/tools/driver/CMakeLists.txt @@ -110,3 +110,11 @@ if(CLANG_ORDER_FILE) target_link_libraries(clang "-Wl,-order_file,${CLANG_ORDER_FILE}") endif() +if(WITH_POLLY AND LINK_POLLY_INTO_TOOLS) + target_link_libraries(clang Polly) + if(POLLY_LINK_LIBS) + foreach(lib ${POLLY_LINK_LIBS}) + target_link_libraries(clang ${lib}) + endforeach(lib) + endif(POLLY_LINK_LIBS) +endif(WITH_POLLY AND LINK_POLLY_INTO_TOOLS) diff --git a/clang/tools/driver/cc1_main.cpp b/clang/tools/driver/cc1_main.cpp index 1c37c7ddeed..990c4fc3c84 100644 --- a/clang/tools/driver/cc1_main.cpp +++ b/clang/tools/driver/cc1_main.cpp @@ -57,6 +57,12 @@ static void LLVMErrorHandler(void *UserData, const std::string &Message, exit(GenCrashDiag ? 70 : 1); } +#ifdef LINK_POLLY_INTO_TOOLS +namespace polly { +void initializePollyPasses(llvm::PassRegistry &Registry); +} +#endif + int cc1_main(const char **ArgBegin, const char **ArgEnd, const char *Argv0, void *MainAddr) { std::unique_ptr<CompilerInstance> Clang(new CompilerInstance()); @@ -68,6 +74,11 @@ int cc1_main(const char **ArgBegin, const char **ArgEnd, llvm::InitializeAllAsmPrinters(); llvm::InitializeAllAsmParsers(); +#ifdef LINK_POLLY_INTO_TOOLS + llvm::PassRegistry &Registry = *llvm::PassRegistry::getPassRegistry(); + polly::initializePollyPasses(Registry); +#endif + // Buffer diagnostics from argument parsing so that we can output them using a // well formed diagnostic object. IntrusiveRefCntPtr<DiagnosticOptions> DiagOpts = new DiagnosticOptions(); |