aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas Hahnfeld <hahnjo@hahnjo.de>2018-02-15 08:10:22 +0000
committerJonas Hahnfeld <hahnjo@hahnjo.de>2018-02-15 08:10:22 +0000
commit4a1407dda6a8f6b055faf414809031cb932c0a3f (patch)
tree193700924ad4fe9368580ff9c2301e17f32024b8
parent51fa29fdc998cd8be332b50656d377b55f648ed4 (diff)
[CMake] Add -fno-experimental-isel for testing
GlobalISel doesn't yet implement blockaddress and falls back to SelectionDAG. This results in additional branch instruction to the next basic block which breaks the OMPT tests. Disable GlobalISel for now when compiling the tests because fixing them is not easily possible. See http://llvm.org/PR36313 for full discussion history. Differential Revision: https://reviews.llvm.org/D43195 git-svn-id: https://llvm.org/svn/llvm-project/openmp/trunk@325218 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--cmake/DetectTestCompiler/CMakeLists.txt22
-rw-r--r--cmake/OpenMPTesting.cmake3
2 files changed, 23 insertions, 2 deletions
diff --git a/cmake/DetectTestCompiler/CMakeLists.txt b/cmake/DetectTestCompiler/CMakeLists.txt
index 82d287b..c2f408c 100644
--- a/cmake/DetectTestCompiler/CMakeLists.txt
+++ b/cmake/DetectTestCompiler/CMakeLists.txt
@@ -1,11 +1,14 @@
cmake_minimum_required(VERSION 2.8)
project(DetectTestCompiler C CXX)
+include(CheckCCompilerFlag)
+include(CheckCXXCompilerFlag)
+
function(write_compiler_information lang)
set(information "${CMAKE_${lang}_COMPILER}")
set(information "${information}\\;${CMAKE_${lang}_COMPILER_ID}")
set(information "${information}\\;${CMAKE_${lang}_COMPILER_VERSION}")
- set(information "${information}\\;${OpenMP_${lang}_FLAGS}")
+ set(information "${information}\\;${${lang}_FLAGS}")
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${lang}CompilerInformation.txt ${information})
endfunction(write_compiler_information)
@@ -15,5 +18,22 @@ if (NOT OpenMP_Found)
set(OpenMP_CXX_FLAGS "-fopenmp")
endif()
+set(C_FLAGS ${flags} ${OpenMP_C_FLAGS})
+set(CXX_FLAGS ${flags} ${OpenMP_CXX_FLAGS})
+
+# TODO: Implement blockaddress in GlobalISel and remove this flag!
+if (CMAKE_C_COMPILER_ID STREQUAL "Clang")
+ check_c_compiler_flag("-fno-experimental-isel" C_HAS_EXPERIMENTAL_ISEL_FLAG)
+ check_cxx_compiler_flag("-fno-experimental-isel" CXX_HAS_EXPERIMENTAL_ISEL_FLAG)
+ macro(add_experimental_isel_flag lang)
+ if (${lang}_HAS_EXPERIMENTAL_ISEL_FLAG)
+ set(${lang}_FLAGS "-fno-experimental-isel ${${lang}_FLAGS}")
+ endif()
+ endmacro(add_experimental_isel_flag)
+
+ add_experimental_isel_flag(C)
+ add_experimental_isel_flag(CXX)
+endif()
+
write_compiler_information(C)
write_compiler_information(CXX)
diff --git a/cmake/OpenMPTesting.cmake b/cmake/OpenMPTesting.cmake
index 1cff9ec..165435f 100644
--- a/cmake/OpenMPTesting.cmake
+++ b/cmake/OpenMPTesting.cmake
@@ -117,7 +117,8 @@ else()
# Cannot use CLANG_VERSION because we are not guaranteed that this is already set.
set(OPENMP_TEST_COMPILER_VERSION "${LLVM_VERSION}")
set(OPENMP_TEST_COMPILER_VERSION_MAJOR "${LLVM_MAJOR_VERSION}")
- set(OPENMP_TEST_COMPILER_OPENMP_FLAGS "-fopenmp")
+ # TODO: Implement blockaddress in GlobalISel and remove this flag!
+ set(OPENMP_TEST_COMPILER_OPENMP_FLAGS "-fopenmp -fno-experimental-isel")
endif()
# Function to set compiler features for use in lit.