[llvm] r231842 - Add new LLVM_OPTIMIZED_TABLEGEN build setting which configures, builds and uses a release tablegen build when LLVM is configured with assertions enabled.

Mehdi Amini mehdi.amini at apple.com
Wed Mar 18 11:57:28 PDT 2015


Hi Chris,

On my “Release + Assert” build, I have the impression that LLVM_OPTIMIZED_TABLEGEN triggers llvm-tblgen to be built in the NATIVE subdirectory without optimization and  I’m not about Assert.

The cmake “config” phase displays:   "-- No build type selected, default to Debug”
And the build phases does not show an optimization flags:
 /usr/local/Cellar/cmake/3.0.2/bin/cmake --build . --target llvm-tblgen --config Release -v
[…]
/usr/bin/c++   -DGTEST_HAS_RTTI=0 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -std=c++11 -fcolor-diagnostics -g -Ilib/Support -I/LLVM_PATH/lib/Support -Iinclude -I/LLVM_PATH/include    -fno-exceptions -fno-rtti -MMD -MT lib/Support/CMakeFiles/LLVMSupport.dir/MathExtras.cpp.o -MF lib/Support/CMakeFiles/LLVMSupport.dir/MathExtras.cpp.o.d -o lib/Support/CMakeFiles/LLVMSupport.dir/MathExtras.cpp.o -c /LLVM_PATH/lib/Support/MathExtras.cpp

It defeats the point of this flag right now.

Did I miss something locally?

Thanks,

Mehdi


> On Mar 10, 2015, at 1:48 PM, Chris Bieneman <beanz at apple.com> wrote:
> 
> Author: cbieneman
> Date: Tue Mar 10 15:48:02 2015
> New Revision: 231842
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=231842&view=rev
> Log:
> Add new LLVM_OPTIMIZED_TABLEGEN build setting which configures, builds and uses a release tablegen build when LLVM is configured with assertions enabled.
> 
> Summary: This change leverages the cross-compiling functionality in the build system to build a release tablegen executable for use during the build.
> 
> Reviewers: resistor, rnk
> 
> Reviewed By: rnk
> 
> Subscribers: rnk, joker.eph, llvm-commits
> 
> Differential Revision: http://reviews.llvm.org/D7349
> 
> Modified:
>    llvm/trunk/CMakeLists.txt
>    llvm/trunk/cmake/modules/TableGen.cmake
> 
> Modified: llvm/trunk/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/CMakeLists.txt?rev=231842&r1=231841&r2=231842&view=diff
> ==============================================================================
> --- llvm/trunk/CMakeLists.txt (original)
> +++ llvm/trunk/CMakeLists.txt Tue Mar 10 15:48:02 2015
> @@ -350,6 +350,11 @@ if(LLVM_DISABLE_LLVM_DYLIB_ATEXIT)
>   set(DISABLE_LLVM_DYLIB_ATEXIT 1)
> endif()
> 
> +option(LLVM_OPTIMIZED_TABLEGEN "Force TableGen to be built with optimization" OFF)
> +if(CMAKE_CROSSCOMPILING OR (LLVM_OPTIMIZED_TABLEGEN AND LLVM_ENABLE_ASSERTIONS))
> +  set(LLVM_USE_HOST_TOOLS ON)
> +endif()
> +
> # All options referred to from HandleLLVMOptions have to be specified
> # BEFORE this include, otherwise options will not be correctly set on
> # first cmake run
> @@ -536,9 +541,9 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON)
> include_directories( ${LLVM_INCLUDE_DIR} ${LLVM_MAIN_INCLUDE_DIR})
> 
> # when crosscompiling import the executable targets from a file
> -if(CMAKE_CROSSCOMPILING)
> +if(LLVM_USE_HOST_TOOLS)
>   include(CrossCompile)
> -endif(CMAKE_CROSSCOMPILING)
> +endif(LLVM_USE_HOST_TOOLS)
> 
> if( ${CMAKE_SYSTEM_NAME} MATCHES FreeBSD )
>   # On FreeBSD, /usr/local/* is not used by default. In order to build LLVM
> 
> Modified: llvm/trunk/cmake/modules/TableGen.cmake
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/TableGen.cmake?rev=231842&r1=231841&r2=231842&view=diff
> ==============================================================================
> --- llvm/trunk/cmake/modules/TableGen.cmake (original)
> +++ llvm/trunk/cmake/modules/TableGen.cmake Tue Mar 10 15:48:02 2015
> @@ -91,7 +91,7 @@ macro(add_tablegen target project)
>   # Effective tblgen executable to be used:
>   set(${project}_TABLEGEN_EXE ${${project}_TABLEGEN} PARENT_SCOPE)
> 
> -  if(CMAKE_CROSSCOMPILING)
> +  if(LLVM_USE_HOST_TOOLS)
>     if( ${${project}_TABLEGEN} STREQUAL "${target}" )
>       set(${project}_TABLEGEN_EXE "${LLVM_NATIVE_BUILD}/bin/${target}")
>       set(${project}_TABLEGEN_EXE ${${project}_TABLEGEN_EXE} PARENT_SCOPE)
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list