From 65412ccaa3f3cb9b8c9ce161e18261d0d2634af7 Mon Sep 17 00:00:00 2001 From: Ellen Norris-Thompson Date: Wed, 20 Jan 2021 16:10:27 +0000 Subject: [PATCH] Re-enabling narrowing errors Fixes narrowing conversion build errors in test_common Removing disable of narrowing errors in main CMakeLists.txt and moving it down to test_conformance CMakeLists.txt where there are many more build errors revealed from this fix Contributes #787 Signed-off-by: Ellen Norris-Thompson --- CMakeLists.txt | 1 - test_common/harness/kernelHelpers.cpp | 20 ++++++++++---------- test_common/harness/rounding_mode.cpp | 2 +- test_common/harness/testHarness.h | 6 +++--- test_conformance/CMakeLists.txt | 4 ++++ 5 files changed, 18 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5cfef6b332..6037c6b888 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,7 +104,6 @@ if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang" # Enable more warnings if not doing a release build. add_cxx_flag_if_supported(-Wall) endif() - add_cxx_flag_if_supported(-Wno-narrowing) add_cxx_flag_if_supported(-Wno-format) add_cxx_flag_if_supported(-Wno-error=cpp) # Allow #warning directive add_cxx_flag_if_supported(-Wno-unknown-pragmas) # Issue #785 diff --git a/test_common/harness/kernelHelpers.cpp b/test_common/harness/kernelHelpers.cpp index 37de92c204..acfb553548 100644 --- a/test_common/harness/kernelHelpers.cpp +++ b/test_common/harness/kernelHelpers.cpp @@ -1624,7 +1624,7 @@ Version get_device_cl_c_version(cl_device_id device) &opencl_c_version_size_in_bytes); test_error_ret(error, "clGetDeviceInfo failed for CL_DEVICE_OPENCL_C_VERSION\n", - (Version{ -1, 0 })); + (Version{ 0, 0 })); std::string opencl_c_version(opencl_c_version_size_in_bytes, '\0'); error = @@ -1633,13 +1633,13 @@ Version get_device_cl_c_version(cl_device_id device) test_error_ret(error, "clGetDeviceInfo failed for CL_DEVICE_OPENCL_C_VERSION\n", - (Version{ -1, 0 })); + (Version{ 0, 0 })); // Scrape out the major, minor pair from the string. auto major = opencl_c_version[opencl_c_version.find('.') - 1]; auto minor = opencl_c_version[opencl_c_version.find('.') + 1]; - return Version{ major - '0', minor - '0' }; + return Version{ (uint)(major - '0'), (uint)(minor - '0') }; } Version get_device_latest_cl_c_version(cl_device_id device) @@ -1657,7 +1657,7 @@ Version get_device_latest_cl_c_version(cl_device_id device) &opencl_c_all_versions_size_in_bytes); test_error_ret( error, "clGetDeviceInfo failed for CL_DEVICE_OPENCL_C_ALL_VERSIONS", - (Version{ -1, 0 })); + (Version{ 0, 0 })); std::vector name_versions( opencl_c_all_versions_size_in_bytes / sizeof(cl_name_version)); error = clGetDeviceInfo(device, CL_DEVICE_OPENCL_C_ALL_VERSIONS, @@ -1665,14 +1665,14 @@ Version get_device_latest_cl_c_version(cl_device_id device) name_versions.data(), nullptr); test_error_ret( error, "clGetDeviceInfo failed for CL_DEVICE_OPENCL_C_ALL_VERSIONS", - (Version{ -1, 0 })); + (Version{ 0, 0 })); Version max_supported_cl_c_version{}; for (const auto &name_version : name_versions) { Version current_version{ - static_cast(CL_VERSION_MAJOR(name_version.version)), - static_cast(CL_VERSION_MINOR(name_version.version)) + static_cast(CL_VERSION_MAJOR(name_version.version)), + static_cast(CL_VERSION_MINOR(name_version.version)) }; max_supported_cl_c_version = (current_version > max_supported_cl_c_version) @@ -1693,7 +1693,7 @@ Version get_max_OpenCL_C_for_context(cl_context context) auto error = clGetContextInfo(context, CL_CONTEXT_DEVICES, 0, nullptr, &devices_size_in_bytes); test_error_ret(error, "clGetDeviceInfo failed for CL_CONTEXT_DEVICES", - (Version{ -1, 0 })); + (Version{ 0, 0 })); std::vector devices(devices_size_in_bytes / sizeof(cl_device_id)); error = clGetContextInfo(context, CL_CONTEXT_DEVICES, devices_size_in_bytes, @@ -1757,8 +1757,8 @@ bool device_supports_cl_c_version(cl_device_id device, Version version) for (const auto &name_version : name_versions) { Version current_version{ - static_cast(CL_VERSION_MAJOR(name_version.version)), - static_cast(CL_VERSION_MINOR(name_version.version)) + static_cast(CL_VERSION_MAJOR(name_version.version)), + static_cast(CL_VERSION_MINOR(name_version.version)) }; if (current_version == version) { diff --git a/test_common/harness/rounding_mode.cpp b/test_common/harness/rounding_mode.cpp index 191c04d929..ae446099e9 100644 --- a/test_common/harness/rounding_mode.cpp +++ b/test_common/harness/rounding_mode.cpp @@ -240,7 +240,7 @@ void UnFlushToZero(void *p) #if defined(__i386__) || defined(__x86_64__) || defined(_MSC_VER) union { void *p; - int i; + uint i; } u = { p }; _mm_setcsr(u.i); #elif defined(__arm__) || defined(__aarch64__) diff --git a/test_common/harness/testHarness.h b/test_common/harness/testHarness.h index b266db80f4..c6925f41ba 100644 --- a/test_common/harness/testHarness.h +++ b/test_common/harness/testHarness.h @@ -25,7 +25,7 @@ class Version { public: Version(): m_major(0), m_minor(0) {} - Version(int major, int minor): m_major(major), m_minor(minor) {} + Version(uint major, uint minor): m_major(major), m_minor(minor) {} bool operator>(const Version &rhs) const { return to_int() > rhs.to_int(); } bool operator<(const Version &rhs) const { return to_int() < rhs.to_int(); } bool operator<=(const Version &rhs) const @@ -49,8 +49,8 @@ class Version { } private: - int m_major; - int m_minor; + uint m_major; + uint m_minor; }; Version get_device_cl_version(cl_device_id device); diff --git a/test_conformance/CMakeLists.txt b/test_conformance/CMakeLists.txt index 1f1970afd8..498f3a3d06 100644 --- a/test_conformance/CMakeLists.txt +++ b/test_conformance/CMakeLists.txt @@ -1,6 +1,10 @@ # Remember current source directory (`test_conformance'). set( CLConf_Install_Base_Dir "${CMAKE_CURRENT_SOURCE_DIR}" ) +if(CMAKE_COMPILER_IS_GNUCC OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?Clang") + add_cxx_flag_if_supported(-Wno-narrowing) +endif() + set(HARNESS_LIB harness) add_subdirectory( allocations )