summaryrefslogtreecommitdiffstats
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
commit6f9e25d3824fb7b03dc6a403e1962d80a9c88ebe (patch)
treefd123963517b66394022b47f8023f77b9a1cdfa2
parentb65b078d4d9d922ad6d30999a26fd76620298081 (diff)
downloadbcm5719-llvm-6f9e25d3824fb7b03dc6a403e1962d80a9c88ebe.tar.gz
bcm5719-llvm-6f9e25d3824fb7b03dc6a403e1962d80a9c88ebe.zip
[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 llvm-svn: 325218
-rw-r--r--openmp/cmake/DetectTestCompiler/CMakeLists.txt22
-rw-r--r--openmp/cmake/OpenMPTesting.cmake3
2 files changed, 23 insertions, 2 deletions
diff --git a/openmp/cmake/DetectTestCompiler/CMakeLists.txt b/openmp/cmake/DetectTestCompiler/CMakeLists.txt
index 82d287b8e00..c2f408c55f3 100644
--- a/openmp/cmake/DetectTestCompiler/CMakeLists.txt
+++ b/openmp/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/openmp/cmake/OpenMPTesting.cmake b/openmp/cmake/OpenMPTesting.cmake
index 1cff9ec8a9d..165435f8189 100644
--- a/openmp/cmake/OpenMPTesting.cmake
+++ b/openmp/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.
OpenPOWER on IntegriCloud