[polly] static builds
Sebastian Pop
spop at codeaurora.org
Fri Nov 15 12:48:16 PST 2013
To ease review, please find the patches attached.
Thanks,
Sebastian
Sebastian Pop wrote:
> Hi,
>
> I would like to advance on this side to make Polly build under Windows. Could
> somebody please review the patches below? The patches add the ability to static
> link Polly.
>
> Thanks,
> Sebastian
>
> Sebastian Pop wrote:
> > Sebastian Pop wrote:
> > > Here are the patches to link polly statically with cmake -D WITH_POLLY:Bool=true
> > > -D POLLY_BUILD_SHARED_LIB:Bool=false. The static link succeeds on all tools
> > > except llvm-lto. The problem is described in the other email thread on cmake
> > > vs. LLVMBuild infrastructure.
> >
> > Attached the patches without the problem mentioned above.
> > Patches pass cmake + ninja builds and check-all. Ok to commit?
> >
> > Thanks,
> > Sebastian
> > --
> > Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> > hosted by The Linux Foundation
>
> > From f488ab7b9cff2e61f9ff11692a00091585b306be Mon Sep 17 00:00:00 2001
> > From: Sebastian Pop <spop at codeaurora.org>
> > Date: Thu, 31 Oct 2013 06:38:45 -0500
> > Subject: [PATCH] link polly statically
> >
> > ---
> > CMakeLists.txt | 14 ++++++++++++++
> > cmake/modules/FindGmp.cmake | 21 +++++++++++++++++++++
> > cmake/modules/FindIsl.cmake | 27 +++++++++++++++++++++++++++
> > cmake/modules/LLVM-Config.cmake | 3 +++
> > include/llvm/Config/config.h.cmake | 6 ++++++
> > include/llvm/Config/llvm-config.h.cmake | 6 ++++++
> > lib/Transforms/IPO/CMakeLists.txt | 4 ++++
> > lib/Transforms/IPO/PassManagerBuilder.cpp | 13 +++++++++++++
> > tools/CMakeLists.txt | 9 ++++++++-
> > 9 files changed, 102 insertions(+), 1 deletions(-)
> > create mode 100644 cmake/modules/FindGmp.cmake
> > create mode 100644 cmake/modules/FindIsl.cmake
> >
> > diff --git a/CMakeLists.txt b/CMakeLists.txt
> > index 096e3e7..895077c 100644
> > --- a/CMakeLists.txt
> > +++ b/CMakeLists.txt
> > @@ -527,3 +527,17 @@ if(MSVC_VERSION EQUAL 1600)
> > file(APPEND "${LLVM_SLN_FILENAME}" "\n# This should be regenerated!\n")
> > endif()
> > endif()
> > +
> > +option(WITH_POLLY "Build LLVM with Polly" OFF)
> > +option(POLLY_BUILD_SHARED_LIB "Build Polly as a shared library (only static builds are supported under Windows)" ON)
> > +
> > +if(NOT WITH_POLLY)
> > + if(LLVM_EXTERNAL_POLLY_BUILD OR NOT LLVM_EXTERNAL_POLLY_SOURCE_DIR STREQUAL "")
> > + set(WITH_POLLY ON)
> > + endif()
> > +endif(NOT WITH_POLLY)
> > +
> > +if(WITH_POLLY)
> > + FIND_PACKAGE(Isl REQUIRED)
> > + FIND_PACKAGE(Gmp REQUIRED)
> > +endif(WITH_POLLY)
> > diff --git a/cmake/modules/FindGmp.cmake b/cmake/modules/FindGmp.cmake
> > new file mode 100644
> > index 0000000..3725d42
> > --- /dev/null
> > +++ b/cmake/modules/FindGmp.cmake
> > @@ -0,0 +1,21 @@
> > +FIND_PATH(GMP_INCLUDE_DIR gmp.h)
> > +
> > +FIND_LIBRARY(GMP_LIBRARY NAMES gmp)
> > +
> > +IF (POLLY_USE_GMP)
> > + IF (GMP_INCLUDE_DIR AND GMP_LIBRARY)
> > + SET(GMP_FOUND TRUE)
> > + ENDIF (GMP_INCLUDE_DIR AND GMP_LIBRARY)
> > +ENDIF (POLLY_USE_GMP)
> > +
> > +
> > +IF (GMP_FOUND)
> > + IF (NOT GMP_FIND_QUIETLY)
> > + MESSAGE(STATUS "Found GMP: ${GMP_LIBRARY}")
> > + ENDIF (NOT GMP_FIND_QUIETLY)
> > +ELSE (GMP_FOUND)
> > + IF (GMP_FIND_REQUIRED)
> > + MESSAGE(FATAL_ERROR "Could not find GMP")
> > + ENDIF (GMP_FIND_REQUIRED)
> > +ENDIF (GMP_FOUND)
> > +
> > diff --git a/cmake/modules/FindIsl.cmake b/cmake/modules/FindIsl.cmake
> > new file mode 100644
> > index 0000000..bf7a0a0
> > --- /dev/null
> > +++ b/cmake/modules/FindIsl.cmake
> > @@ -0,0 +1,27 @@
> > +IF (POLLY_EXTERNAL_ISL_SOURCE_DIR)
> > + add_subdirectory(${POLLY_EXTERNAL_ISL_SOURCE_DIR} "${CMAKE_CURRENT_BINARY_DIR}/isl")
> > + IF (POLLY_BUILD_SHARED_LIB)
> > + SET(ISL_LIBRARY "${ISL_BINARY_DIR}/lib/isl.so")
> > + ELSE(POLLY_BUILD_SHARED_LIB)
> > + SET(ISL_LIBRARY "${ISL_BINARY_DIR}/lib/isl.a")
> > + ENDIF(POLLY_BUILD_SHARED_LIB)
> > + SET(ISL_INCLUDE_DIR "${POLLY_EXTERNAL_ISL_SOURCE_DIR}/include")
> > + INCLUDE_DIRECTORIES("${POLLY_EXTERNAL_ISL_SOURCE_DIR}/imath")
> > +ENDIF (POLLY_EXTERNAL_ISL_SOURCE_DIR)
> > +
> > +FIND_PATH(ISL_INCLUDE_DIR isl/val.h)
> > +FIND_LIBRARY(ISL_LIBRARY NAMES isl)
> > +
> > +IF (ISL_INCLUDE_DIR AND ISL_LIBRARY)
> > + SET(ISL_FOUND TRUE)
> > +ENDIF (ISL_INCLUDE_DIR AND ISL_LIBRARY)
> > +
> > +IF (ISL_FOUND)
> > + IF (NOT Isl_FIND_QUIETLY)
> > + MESSAGE(STATUS "Found Isl: ${ISL_LIBRARY}")
> > + ENDIF (NOT Isl_FIND_QUIETLY)
> > +ELSE (ISL_FOUND)
> > + IF (Isl_FIND_REQUIRED)
> > + MESSAGE(FATAL_ERROR "Could not find Isl")
> > + ENDIF (Isl_FIND_REQUIRED)
> > +ENDIF (ISL_FOUND)
> > diff --git a/cmake/modules/LLVM-Config.cmake b/cmake/modules/LLVM-Config.cmake
> > index e26fabd..a8dfb7a 100644
> > --- a/cmake/modules/LLVM-Config.cmake
> > +++ b/cmake/modules/LLVM-Config.cmake
> > @@ -30,6 +30,9 @@ endfunction(get_system_libs)
> > function(link_system_libs target)
> > get_system_libs(llvm_system_libs)
> > target_link_libraries(${target} ${llvm_system_libs})
> > + if (WITH_POLLY)
> > + target_link_libraries(${target} ${ISL_LIBRARY} ${GMP_LIBRARY})
> > + endif()
> > endfunction(link_system_libs)
> >
> >
> > diff --git a/include/llvm/Config/config.h.cmake b/include/llvm/Config/config.h.cmake
> > index 4c49cbb..4030fb9 100644
> > --- a/include/llvm/Config/config.h.cmake
> > +++ b/include/llvm/Config/config.h.cmake
> > @@ -638,6 +638,9 @@
> > /* Define to the version of this package. */
> > #cmakedefine PACKAGE_VERSION "${PACKAGE_VERSION}"
> >
> > +/* Define if we build Polly as a shared library */
> > +#cmakedefine POLLY_BUILD_SHARED_LIB
> > +
> > /* Define as the return type of signal handlers (`int' or `void'). */
> > #cmakedefine RETSIGTYPE ${RETSIGTYPE}
> >
> > @@ -659,6 +662,9 @@
> > /* Type of 1st arg on ELM Callback */
> > #cmakedefine WIN32_ELMCB_PCSTR ${WIN32_ELMCB_PCSTR}
> >
> > +/* Define if we have the required libraries to build Polly */
> > +#cmakedefine WITH_POLLY
> > +
> > /* Define to empty if `const' does not conform to ANSI C. */
> > #undef const
> >
> > diff --git a/include/llvm/Config/llvm-config.h.cmake b/include/llvm/Config/llvm-config.h.cmake
> > index 80616ef..452339a 100644
> > --- a/include/llvm/Config/llvm-config.h.cmake
> > +++ b/include/llvm/Config/llvm-config.h.cmake
> > @@ -124,4 +124,10 @@
> > /* Define to 1 if you have the <sanitizer/msan_interface.h> header file. */
> > #cmakedefine HAVE_SANITIZER_MSAN_INTERFACE_H ${HAVE_SANITIZER_MSAN_INTERFACE_H}
> >
> > +/* Define if we build Polly as a shared library */
> > +#cmakedefine POLLY_BUILD_SHARED_LIB
> > +
> > +/* Define if we have the required libraries to build Polly */
> > +#cmakedefine WITH_POLLY
> > +
> > #endif
> > diff --git a/lib/Transforms/IPO/CMakeLists.txt b/lib/Transforms/IPO/CMakeLists.txt
> > index 90c1c33..bd042db 100644
> > --- a/lib/Transforms/IPO/CMakeLists.txt
> > +++ b/lib/Transforms/IPO/CMakeLists.txt
> > @@ -23,3 +23,7 @@ add_llvm_library(LLVMipo
> > )
> >
> > add_dependencies(LLVMipo intrinsics_gen)
> > +
> > +if (WITH_POLLY AND NOT POLLY_BUILD_SHARED_LIB)
> > + target_link_libraries(LLVMipo LLVMPolly LLVMPollyAnalysis LLVMPollyCodeGen LLVMPollyExchange LLVMPollyJSON LLVMPollySupport)
> > +endif (WITH_POLLY AND NOT POLLY_BUILD_SHARED_LIB)
> > diff --git a/lib/Transforms/IPO/PassManagerBuilder.cpp b/lib/Transforms/IPO/PassManagerBuilder.cpp
> > index 0017c1b..083055f 100644
> > --- a/lib/Transforms/IPO/PassManagerBuilder.cpp
> > +++ b/lib/Transforms/IPO/PassManagerBuilder.cpp
> > @@ -105,8 +105,18 @@ PassManagerBuilder::addInitialAliasAnalysisPasses(PassManagerBase &PM) const {
> > PM.add(createBasicAliasAnalysisPass());
> > }
> >
> > +#if defined(WITH_POLLY) && !defined(POLLY_BUILD_SHARED_LIB)
> > +void registerPollyEarlyAsPossiblePasses(const llvm::PassManagerBuilder &Builder,
> > + llvm::PassManagerBase &PM);
> > +void registerPollyOptLevel0Passes(const llvm::PassManagerBuilder &Builder,
> > + llvm::PassManagerBase &PM);
> > +#endif // WITH_POLLY
> > +
> > void PassManagerBuilder::populateFunctionPassManager(FunctionPassManager &FPM) {
> > addExtensionsToPM(EP_EarlyAsPossible, FPM);
> > +#if defined(WITH_POLLY) && !defined(POLLY_BUILD_SHARED_LIB)
> > + registerPollyEarlyAsPossiblePasses(*this, FPM);
> > +#endif // WITH_POLLY
> >
> > // Add LibraryInfo if we have some.
> > if (LibraryInfo) FPM.add(new TargetLibraryInfo(*LibraryInfo));
> > @@ -140,6 +150,9 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) {
> > MPM.add(createBarrierNoopPass());
> >
> > addExtensionsToPM(EP_EnabledOnOptLevel0, MPM);
> > +#if defined(WITH_POLLY) && !defined(POLLY_BUILD_SHARED_LIB)
> > + registerPollyOptLevel0Passes(*this, MPM);
> > +#endif // WITH_POLLY
> > return;
> > }
> >
> > diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
> > index 12e10fd..a3c0875 100644
> > --- a/tools/CMakeLists.txt
> > +++ b/tools/CMakeLists.txt
> > @@ -4,6 +4,11 @@
> >
> > add_llvm_tool_subdirectory(llvm-config)
> >
> > +# Build polly before opt, as opt links against polly.
> > +if(NOT POLLY_BUILD_SHARED_LIB)
> > + add_llvm_external_project(polly)
> > +endif()
> > +
> > add_llvm_tool_subdirectory(opt)
> > add_llvm_tool_subdirectory(llvm-as)
> > add_llvm_tool_subdirectory(llvm-dis)
> > @@ -69,7 +74,9 @@ add_llvm_external_project(clang)
> > if( NOT LLVM_INCLUDE_TOOLS STREQUAL "bootstrap-only" )
> > add_llvm_external_project(lld)
> > add_llvm_external_project(lldb)
> > - add_llvm_external_project(polly)
> > + if(POLLY_BUILD_SHARED_LIB)
> > + add_llvm_external_project(polly)
> > + endif(POLLY_BUILD_SHARED_LIB)
> >
> > # Automatically add remaining sub-directories containing a 'CMakeLists.txt'
> > # file as external projects.
> > --
> > 1.7.6.4
> >
>
> > From 7b162776f7fe52fb11a2d61ed4d1833fc1a03bcc Mon Sep 17 00:00:00 2001
> > From: Sebastian Pop <spop at codeaurora.org>
> > Date: Thu, 31 Oct 2013 07:17:25 -0500
> > Subject: [PATCH] link polly statically
> >
> > ---
> > cmake/FindIsl.cmake | 13 ++++++-
> > lib/Analysis/CMakeLists.txt | 9 ++++-
> > lib/Analysis/MayAliasSet.cpp | 42 ++++++++++++++++++++++
> > lib/CMakeLists.txt | 80 ++++++++++++++++++++++++++++++------------
> > lib/CodeGen/CMakeLists.txt | 17 ++++++++-
> > lib/Exchange/CMakeLists.txt | 19 +++++++++-
> > lib/JSON/CMakeLists.txt | 7 +++-
> > lib/MayAliasSet.cpp | 42 ----------------------
> > lib/RegisterPasses.cpp | 32 +++++++++++-----
> > lib/Support/CMakeLists.txt | 8 ++++-
> > test/lit.site.cfg.in | 8 +++-
> > 11 files changed, 191 insertions(+), 86 deletions(-)
> > create mode 100644 lib/Analysis/MayAliasSet.cpp
> > delete mode 100644 lib/MayAliasSet.cpp
> >
> > diff --git a/cmake/FindIsl.cmake b/cmake/FindIsl.cmake
> > index 1c46e72..e3b0701 100644
> > --- a/cmake/FindIsl.cmake
> > +++ b/cmake/FindIsl.cmake
> > @@ -1,12 +1,21 @@
> > -FIND_PATH(ISL_INCLUDE_DIR isl/val.h)
> > +IF (POLLY_EXTERNAL_ISL_SOURCE_DIR)
> > + add_subdirectory(${POLLY_EXTERNAL_ISL_SOURCE_DIR} "${CMAKE_CURRENT_BINARY_DIR}/isl")
> > + IF (POLLY_BUILD_SHARED_LIB)
> > + SET(ISL_LIBRARY "${ISL_BINARY_DIR}/lib/isl.so")
> > + ELSE(POLLY_BUILD_SHARED_LIB)
> > + SET(ISL_LIBRARY "${ISL_BINARY_DIR}/lib/isl.a")
> > + ENDIF(POLLY_BUILD_SHARED_LIB)
> > + SET(ISL_INCLUDE_DIR "${POLLY_EXTERNAL_ISL_SOURCE_DIR}/include")
> > + INCLUDE_DIRECTORIES("${POLLY_EXTERNAL_ISL_SOURCE_DIR}/imath")
> > +ENDIF (POLLY_EXTERNAL_ISL_SOURCE_DIR)
> >
> > +FIND_PATH(ISL_INCLUDE_DIR isl/val.h)
> > FIND_LIBRARY(ISL_LIBRARY NAMES isl)
> >
> > IF (ISL_INCLUDE_DIR AND ISL_LIBRARY)
> > SET(ISL_FOUND TRUE)
> > ENDIF (ISL_INCLUDE_DIR AND ISL_LIBRARY)
> >
> > -
> > IF (ISL_FOUND)
> > IF (NOT Isl_FIND_QUIETLY)
> > MESSAGE(STATUS "Found Isl: ${ISL_LIBRARY}")
> > diff --git a/lib/Analysis/CMakeLists.txt b/lib/Analysis/CMakeLists.txt
> > index 9e46527..b40fe7b 100644
> > --- a/lib/Analysis/CMakeLists.txt
> > +++ b/lib/Analysis/CMakeLists.txt
> > @@ -1,8 +1,15 @@
> > -add_polly_library(PollyAnalysis
> > +set(POLLY_ANALYSIS_SOURCES
> > Dependences.cpp
> > + MayAliasSet.cpp
> > ScopDetection.cpp
> > ScopInfo.cpp
> > ScopGraphPrinter.cpp
> > ScopPass.cpp
> > TempScopInfo.cpp
> > )
> > +
> > +if(POLLY_BUILD_SHARED_LIB)
> > + add_polly_library(PollyAnalysis ${POLLY_ANALYSIS_SOURCES})
> > +else(POLLY_BUILD_SHARED_LIB)
> > + add_llvm_library(LLVMPollyAnalysis ${POLLY_ANALYSIS_SOURCES})
> > +endif(POLLY_BUILD_SHARED_LIB)
> > diff --git a/lib/Analysis/MayAliasSet.cpp b/lib/Analysis/MayAliasSet.cpp
> > new file mode 100644
> > index 0000000..0d47d8c
> > --- /dev/null
> > +++ b/lib/Analysis/MayAliasSet.cpp
> > @@ -0,0 +1,42 @@
> > +//===---------- MayAliasSet.cpp - May-Alais Set for base pointers --------===//
> > +//
> > +// The LLVM Compiler Infrastructure
> > +//
> > +// This file is distributed under the University of Illinois Open Source
> > +// License. See LICENSE.TXT for details.
> > +//
> > +//===----------------------------------------------------------------------===//
> > +//
> > +// This file implements the MayAliasSet class
> > +//
> > +//===----------------------------------------------------------------------===//
> > +
> > +#include "polly/TempScopInfo.h"
> > +#include "polly/MayAliasSet.h"
> > +#include "llvm/Analysis/AliasAnalysis.h"
> > +#include "llvm/Analysis/AliasSetTracker.h"
> > +#include "llvm/Analysis/RegionInfo.h"
> > +#include "llvm/Analysis/RegionIterator.h"
> > +#include "llvm/Assembly/Writer.h"
> > +#include "llvm/IR/LLVMContext.h"
> > +#include "llvm/Support/Debug.h"
> > +#include "llvm/Support/raw_ostream.h"
> > +
> > +using namespace llvm;
> > +using namespace polly;
> > +
> > +void MayAliasSet::print(raw_ostream &OS) const {
> > + OS << "Must alias {";
> > +
> > + for (const_iterator I = mustalias_begin(), E = mustalias_end(); I != E; ++I) {
> > + WriteAsOperand(OS, *I, false);
> > + OS << ", ";
> > + }
> > +
> > + OS << "} May alias {";
> > + OS << '}';
> > +}
> > +
> > +void MayAliasSet::dump() const { print(dbgs()); }
> > +
> > +void MayAliasSetInfo::buildMayAliasSets(TempScop &Scop, AliasAnalysis &AA) {}
> > diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
> > index f6ace3a..079c5ab 100644
> > --- a/lib/CMakeLists.txt
> > +++ b/lib/CMakeLists.txt
> > @@ -4,31 +4,30 @@ add_subdirectory(Exchange)
> > add_subdirectory(Support)
> > add_subdirectory(JSON)
> >
> > -set(MODULE TRUE)
> > +if(POLLY_BUILD_SHARED_LIB)
> > + set(MODULE TRUE)
> > +endif(POLLY_BUILD_SHARED_LIB)
> > set(LLVM_NO_RTTI 1)
> >
> > if (SCOPLIB_FOUND)
> > set(POLLY_SCOPLIB_FILES Pocc.cpp)
> > +elseif(NOT POLLY_BUILD_SHARED_LIB)
> > + set(LLVM_OPTIONAL_SOURCES ${LLVM_OPTIONAL_SOURCES}
> > + Pocc.cpp)
> > endif (SCOPLIB_FOUND)
> >
> > if (PLUTO_FOUND)
> > set(POLLY_PLUTO_FILES Pluto.cpp)
> > +elseif(NOT POLLY_BUILD_SHARED_LIB)
> > + set(LLVM_OPTIONAL_SOURCES ${LLVM_OPTIONAL_SOURCES}
> > + Pluto.cpp)
> > endif (PLUTO_FOUND)
> >
> > -set(LLVM_USED_LIBS
> > - PollyAnalysis
> > - PollyCodeGen
> > - PollyExchange
> > - PollySupport
> > - PollyJSON
> > - )
> > -
> > -add_polly_loadable_module(LLVMPolly
> > +set(POLLY_SRC
> > CodePreparation.cpp
> > DeadCodeElimination.cpp
> > IndependentBlocks.cpp
> > IndVarSimplify.cpp
> > - MayAliasSet.cpp
> > Pocc.cpp
> > RegisterPasses.cpp
> > ScheduleOptimizer.cpp
> > @@ -36,18 +35,53 @@ add_polly_loadable_module(LLVMPolly
> > ${POLLY_PLUTO_FILES}
> > )
> >
> > -if (TARGET intrinsics_gen)
> > - # Check if we are building as part of an LLVM build
> > - add_dependencies(LLVMPolly intrinsics_gen)
> > -endif()
> > -
> > -add_dependencies(LLVMPolly
> > - PollyAnalysis
> > - PollyCodeGen
> > - PollyExchange
> > - PollySupport
> > - PollyJSON
> > - )
> > +if(POLLY_BUILD_SHARED_LIB)
> > + set(LLVM_USED_LIBS
> > + PollyAnalysis
> > + PollyCodeGen
> > + PollyExchange
> > + PollySupport
> > + PollyJSON
> > + )
> > + add_polly_loadable_module(LLVMPolly ${POLLY_SRC})
> > +
> > + if (TARGET intrinsics_gen)
> > + # Check if we are building as part of an LLVM build
> > + add_dependencies(LLVMPolly intrinsics_gen)
> > + endif()
> > +
> > + add_dependencies(LLVMPolly
> > + PollyAnalysis
> > + PollyCodeGen
> > + PollyExchange
> > + PollySupport
> > + PollyJSON
> > + )
> > +else(POLLY_BUILD_SHARED_LIB)
> > + set(LLVM_USED_LIBS
> > + LLVMPollyAnalysis
> > + LLVMPollyCodeGen
> > + LLVMPollyExchange
> > + LLVMPollySupport
> > + LLVMPollyJSON
> > + )
> > + add_llvm_library(LLVMPolly ${POLLY_SRC})
> > +
> > + if (TARGET intrinsics_gen)
> > + # Check if we are building as part of an LLVM build
> > + add_dependencies(LLVMPolly intrinsics_gen)
> > + endif()
> > +
> > + add_dependencies(LLVMPolly
> > + LLVMPollyAnalysis
> > + LLVMPollyCodeGen
> > + LLVMPollyExchange
> > + LLVMPollySupport
> > + LLVMPollyJSON
> > + )
> > +
> > + target_link_libraries(LLVMPolly LLVMTransformUtils LLVMAnalysis)
> > +endif(POLLY_BUILD_SHARED_LIB)
> >
> > set_target_properties(LLVMPolly
> > PROPERTIES
> > diff --git a/lib/CodeGen/CMakeLists.txt b/lib/CodeGen/CMakeLists.txt
> > index b1c29c5..39c72b0 100644
> > --- a/lib/CodeGen/CMakeLists.txt
> > +++ b/lib/CodeGen/CMakeLists.txt
> > @@ -2,6 +2,10 @@ if (CLOOG_FOUND)
> > set(CLOOG_FILES
> > Cloog.cpp
> > CodeGeneration.cpp)
> > +elseif(NOT POLLY_BUILD_SHARED_LIB)
> > + set(LLVM_OPTIONAL_SOURCES ${LLVM_OPTIONAL_SOURCES}
> > + Cloog.cpp
> > + CodeGeneration.cpp)
> > endif (CLOOG_FOUND)
> >
> > set(ISL_CODEGEN_FILES
> > @@ -11,13 +15,22 @@ set(ISL_CODEGEN_FILES
> > if (GPU_CODEGEN)
> > set (GPGPU_CODEGEN_FILES
> > PTXGenerator.cpp)
> > +elseif(NOT POLLY_BUILD_SHARED_LIB)
> > + set(LLVM_OPTIONAL_SOURCES ${LLVM_OPTIONAL_SOURCES}
> > + PTXGenerator.cpp)
> > endif (GPU_CODEGEN)
> >
> > -add_polly_library(PollyCodeGen
> > +set(POLLY_CODEGEN_SOURCES
> > BlockGenerators.cpp
> > ${CLOOG_FILES}
> > ${ISL_CODEGEN_FILES}
> > LoopGenerators.cpp
> > Utils.cpp
> > ${GPGPU_CODEGEN_FILES}
> > -)
> > + )
> > +
> > +if(POLLY_BUILD_SHARED_LIB)
> > + add_polly_library(PollyCodeGen ${POLLY_CODEGEN_SOURCES})
> > +else(POLLY_BUILD_SHARED_LIB)
> > + add_llvm_library(LLVMPollyCodeGen ${POLLY_CODEGEN_SOURCES})
> > +endif(POLLY_BUILD_SHARED_LIB)
> > diff --git a/lib/Exchange/CMakeLists.txt b/lib/Exchange/CMakeLists.txt
> > index 391f242..5c544d5 100644
> > --- a/lib/Exchange/CMakeLists.txt
> > +++ b/lib/Exchange/CMakeLists.txt
> > @@ -2,6 +2,10 @@ if (OPENSCOP_FOUND)
> > set(POLLY_OPENSCOP_FILES
> > OpenScopImporter.cpp
> > OpenScopExporter.cpp)
> > +elseif(NOT POLLY_BUILD_SHARED_LIB)
> > + set(LLVM_OPTIONAL_SOURCES ${LLVM_OPTIONAL_SOURCES}
> > + OpenScopImporter.cpp
> > + OpenScopExporter.cpp)
> > endif (OPENSCOP_FOUND)
> >
> > if (SCOPLIB_FOUND)
> > @@ -9,12 +13,23 @@ if (SCOPLIB_FOUND)
> > ScopLib.cpp
> > ScopLibExporter.cpp
> > ScopLibImporter.cpp)
> > +elseif(NOT POLLY_BUILD_SHARED_LIB)
> > + set(LLVM_OPTIONAL_SOURCES ${LLVM_OPTIONAL_SOURCES}
> > + ScopLib.cpp
> > + ScopLibExporter.cpp
> > + ScopLibImporter.cpp)
> > endif (SCOPLIB_FOUND)
> >
> > -add_polly_library(PollyExchange
> > +set(POLLY_EXCHANGE_SOURCES
> > JSONExporter.cpp
> > ${POLLY_OPENSCOP_FILES}
> > ${POLLY_SCOPLIB_FILES}
> > )
> >
> > -target_link_libraries(PollyExchange PollyJSON)
> > +if(POLLY_BUILD_SHARED_LIB)
> > + add_polly_library(PollyExchange ${POLLY_EXCHANGE_SOURCES})
> > + target_link_libraries(PollyExchange PollyJSON)
> > +else(POLLY_BUILD_SHARED_LIB)
> > + add_llvm_library(LLVMPollyExchange ${POLLY_EXCHANGE_SOURCES})
> > + target_link_libraries(LLVMPollyExchange LLVMPollyJSON)
> > +endif(POLLY_BUILD_SHARED_LIB)
> > diff --git a/lib/JSON/CMakeLists.txt b/lib/JSON/CMakeLists.txt
> > index 68bc1a1..f6dcc6d 100644
> > --- a/lib/JSON/CMakeLists.txt
> > +++ b/lib/JSON/CMakeLists.txt
> > @@ -1,6 +1,11 @@
> > -add_polly_library(PollyJSON
> > +set(POLLY_JSON_SOURCES
> > json_reader.cpp
> > json_value.cpp
> > json_writer.cpp
> > )
> >
> > +if(POLLY_BUILD_SHARED_LIB)
> > + add_polly_library(PollyJSON ${POLLY_JSON_SOURCES})
> > +else(POLLY_BUILD_SHARED_LIB)
> > + add_llvm_library(LLVMPollyJSON ${POLLY_JSON_SOURCES})
> > +endif(POLLY_BUILD_SHARED_LIB)
> > diff --git a/lib/MayAliasSet.cpp b/lib/MayAliasSet.cpp
> > deleted file mode 100644
> > index 0d47d8c..0000000
> > --- a/lib/MayAliasSet.cpp
> > +++ /dev/null
> > @@ -1,42 +0,0 @@
> > -//===---------- MayAliasSet.cpp - May-Alais Set for base pointers --------===//
> > -//
> > -// The LLVM Compiler Infrastructure
> > -//
> > -// This file is distributed under the University of Illinois Open Source
> > -// License. See LICENSE.TXT for details.
> > -//
> > -//===----------------------------------------------------------------------===//
> > -//
> > -// This file implements the MayAliasSet class
> > -//
> > -//===----------------------------------------------------------------------===//
> > -
> > -#include "polly/TempScopInfo.h"
> > -#include "polly/MayAliasSet.h"
> > -#include "llvm/Analysis/AliasAnalysis.h"
> > -#include "llvm/Analysis/AliasSetTracker.h"
> > -#include "llvm/Analysis/RegionInfo.h"
> > -#include "llvm/Analysis/RegionIterator.h"
> > -#include "llvm/Assembly/Writer.h"
> > -#include "llvm/IR/LLVMContext.h"
> > -#include "llvm/Support/Debug.h"
> > -#include "llvm/Support/raw_ostream.h"
> > -
> > -using namespace llvm;
> > -using namespace polly;
> > -
> > -void MayAliasSet::print(raw_ostream &OS) const {
> > - OS << "Must alias {";
> > -
> > - for (const_iterator I = mustalias_begin(), E = mustalias_end(); I != E; ++I) {
> > - WriteAsOperand(OS, *I, false);
> > - OS << ", ";
> > - }
> > -
> > - OS << "} May alias {";
> > - OS << '}';
> > -}
> > -
> > -void MayAliasSet::dump() const { print(dbgs()); }
> > -
> > -void MayAliasSetInfo::buildMayAliasSets(TempScop &Scop, AliasAnalysis &AA) {}
> > diff --git a/lib/RegisterPasses.cpp b/lib/RegisterPasses.cpp
> > index 26a138e..bca1cf2 100644
> > --- a/lib/RegisterPasses.cpp
> > +++ b/lib/RegisterPasses.cpp
> > @@ -310,12 +310,9 @@ static void registerPollyPasses(llvm::PassManagerBase &PM) {
> > PM.add(llvm::createCFGPrinterPass());
> > }
> >
> > -static void
> > -registerPollyEarlyAsPossiblePasses(const llvm::PassManagerBuilder &Builder,
> > - llvm::PassManagerBase &PM) {
> > -
> > - if (Builder.OptLevel == 0)
> > - return;
> > +static bool shouldEnablePolly(unsigned OptLevel) {
> > + if (OptLevel == 0)
> > + return false;
> >
> > if (PollyOnlyPrinter || PollyPrinter || PollyOnlyViewer || PollyViewer)
> > PollyTrackFailures = true;
> > @@ -324,7 +321,16 @@ registerPollyEarlyAsPossiblePasses(const llvm::PassManagerBuilder &Builder,
> > ExportJScop || ImportJScop)
> > PollyEnabled = true;
> >
> > - if (!PollyEnabled)
> > + return PollyEnabled;
> > +}
> > +
> > +} // end of anonymous namespace.
> > +
> > +void
> > +registerPollyEarlyAsPossiblePasses(const llvm::PassManagerBuilder &Builder,
> > + llvm::PassManagerBase &PM) {
> > +
> > + if (!shouldEnablePolly(Builder.OptLevel))
> > return;
> >
> > // We only run Polly at optimization level '-O3'.
> > @@ -340,11 +346,15 @@ registerPollyEarlyAsPossiblePasses(const llvm::PassManagerBuilder &Builder,
> > registerPollyPasses(PM);
> > }
> >
> > -static void registerPollyOptLevel0Passes(const llvm::PassManagerBuilder &,
> > - llvm::PassManagerBase &PM) {
> > - registerCanonicalicationPasses(PM);
> > +void registerPollyOptLevel0Passes(const llvm::PassManagerBuilder &Builder,
> > + llvm::PassManagerBase &PM) {
> > + if (shouldEnablePolly(Builder.OptLevel))
> > + registerCanonicalicationPasses(PM);
> > }
> >
> > +#ifdef POLLY_BUILD_SHARED_LIB
> > +namespace {
> > +
> > /// @brief Register Polly canonicalization passes at opt level '0'
> > ///
> > /// At '-O0' we schedule the Polly canonicalization passes. This allows us
> > @@ -385,3 +395,5 @@ static llvm::RegisterStandardPasses
> > RegisterPollyOptimizer(llvm::PassManagerBuilder::EP_EarlyAsPossible,
> > registerPollyEarlyAsPossiblePasses);
> > } // end of anonymous namespace.
> > +
> > +#endif // POLLY_BUILD_SHARED_LIB
> > diff --git a/lib/Support/CMakeLists.txt b/lib/Support/CMakeLists.txt
> > index c6dfd87..b10d20a 100644
> > --- a/lib/Support/CMakeLists.txt
> > +++ b/lib/Support/CMakeLists.txt
> > @@ -1,5 +1,11 @@
> > -add_polly_library(PollySupport
> > +set(POLLY_SUPPORT_SOURCES
> > GICHelper.cpp
> > SCEVValidator.cpp
> > ScopHelper.cpp
> > )
> > +
> > +if(POLLY_BUILD_SHARED_LIB)
> > + add_polly_library(PollySupport ${POLLY_SUPPORT_SOURCES})
> > +else(POLLY_BUILD_SHARED_LIB)
> > + add_llvm_library(LLVMPollySupport ${POLLY_SUPPORT_SOURCES})
> > +endif(POLLY_BUILD_SHARED_LIB)
> > diff --git a/test/lit.site.cfg.in b/test/lit.site.cfg.in
> > index d87f2fe..7abed4a 100644
> > --- a/test/lit.site.cfg.in
> > +++ b/test/lit.site.cfg.in
> > @@ -25,8 +25,12 @@ except KeyError,e:
> > key, = e.args
> > lit_config.fatal("unable to find %r parameter, use '--param=%s=VALUE'" % (key,key))
> >
> > -config.substitutions.append(('%loadPolly', '-load '
> > - + config.polly_lib_dir + '/LLVMPolly at LLVM_SHLIBEXT@'))
> > +if '@POLLY_BUILD_SHARED_LIB@' == 'true':
> > + config.substitutions.append(('%loadPolly', '-load '
> > + + config.polly_lib_dir + '/LLVMPolly at LLVM_SHLIBEXT@'))
> > +else:
> > + config.substitutions.append(('%loadPolly', ''))
> > +
> > config.substitutions.append(('%defaultOpts', ' -basicaa -polly-prepare'))
> > config.substitutions.append(('%polybenchOpts', ' -O3 -loop-simplify -indvars '))
> > config.substitutions.append(('%vector-opt', '-polly-vectorizer=polly'))
> > --
> > 1.7.6.4
> >
>
>
> --
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
> hosted by The Linux Foundation
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm.patch
Type: text/x-diff
Size: 8111 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131115/e787d9c2/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: polly.patch
Type: text/x-diff
Size: 14453 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20131115/e787d9c2/attachment-0001.patch>
More information about the llvm-commits
mailing list