[llvm] r314922 - Revert D38481 due to missing cmake check for CPU_COUNT
Rafael Avila de Espindola via llvm-commits
llvm-commits at lists.llvm.org
Wed Oct 4 11:39:48 PDT 2017
Sorry about that.
I will take a look at what is the correct way of checking for a macro
with cmake.
Cheers,
Rafael
Daniel Neilson via llvm-commits <llvm-commits at lists.llvm.org> writes:
> Author: dneilson
> Date: Wed Oct 4 11:19:03 2017
> New Revision: 314922
>
> URL: http://llvm.org/viewvc/llvm-project?rev=314922&view=rev
> Log:
> Revert D38481 due to missing cmake check for CPU_COUNT
>
> Summary:
> This reverts D38481. The change breaks systems with older versions of glibc. It
> injects a use of CPU_COUNT() from sched.h without checking to ensure that the
> function exists first.
>
> Reviewers:
>
> Subscribers:
>
> Modified:
> llvm/trunk/cmake/config-ix.cmake
> llvm/trunk/include/llvm/Config/config.h.cmake
> llvm/trunk/include/llvm/Support/ThreadPool.h
> llvm/trunk/include/llvm/Support/Threading.h
> llvm/trunk/lib/Support/Parallel.cpp
> llvm/trunk/lib/Support/ThreadPool.cpp
> llvm/trunk/lib/Support/Threading.cpp
> llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp
>
> Modified: llvm/trunk/cmake/config-ix.cmake
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/config-ix.cmake?rev=314922&r1=314921&r2=314922&view=diff
> ==============================================================================
> --- llvm/trunk/cmake/config-ix.cmake (original)
> +++ llvm/trunk/cmake/config-ix.cmake Wed Oct 4 11:19:03 2017
> @@ -269,7 +269,6 @@ if( LLVM_USING_GLIBC )
> add_definitions( -D_GNU_SOURCE )
> endif()
> # This check requires _GNU_SOURCE
> -check_library_exists(c sched_getaffinity "" HAVE_SCHED_GETAFFINITY)
> if(HAVE_LIBPTHREAD)
> check_library_exists(pthread pthread_getname_np "" HAVE_PTHREAD_GETNAME_NP)
> check_library_exists(pthread pthread_setname_np "" HAVE_PTHREAD_SETNAME_NP)
>
> Modified: llvm/trunk/include/llvm/Config/config.h.cmake
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Config/config.h.cmake?rev=314922&r1=314921&r2=314922&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Config/config.h.cmake (original)
> +++ llvm/trunk/include/llvm/Config/config.h.cmake Wed Oct 4 11:19:03 2017
> @@ -185,9 +185,6 @@
> /* Define to 1 if you have the `setenv' function. */
> #cmakedefine HAVE_SETENV ${HAVE_SETENV}
>
> -/* Define to 1 if you have the `sched_getaffinity' function. */
> -#cmakedefine HAVE_SCHED_GETAFFINITY ${HAVE_SCHED_GETAFFINITY}
> -
> /* Define to 1 if you have the `setrlimit' function. */
> #cmakedefine HAVE_SETRLIMIT ${HAVE_SETRLIMIT}
>
>
> Modified: llvm/trunk/include/llvm/Support/ThreadPool.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/ThreadPool.h?rev=314922&r1=314921&r2=314922&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/ThreadPool.h (original)
> +++ llvm/trunk/include/llvm/Support/ThreadPool.h Wed Oct 4 11:19:03 2017
> @@ -38,8 +38,8 @@ public:
> using TaskTy = std::function<void()>;
> using PackagedTaskTy = std::packaged_task<void()>;
>
> - /// Construct a pool with the number of threads found by
> - /// hardware_concurrency().
> + /// Construct a pool with the number of core available on the system (or
> + /// whatever the value returned by std::thread::hardware_concurrency() is).
> ThreadPool();
>
> /// Construct a pool of \p ThreadCount threads
>
> Modified: llvm/trunk/include/llvm/Support/Threading.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Threading.h?rev=314922&r1=314921&r2=314922&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/Threading.h (original)
> +++ llvm/trunk/include/llvm/Support/Threading.h Wed Oct 4 11:19:03 2017
> @@ -131,14 +131,6 @@ void llvm_execute_on_thread(void (*UserF
> /// Returns 1 when LLVM is configured with LLVM_ENABLE_THREADS=OFF
> unsigned heavyweight_hardware_concurrency();
>
> - /// Get the number of threads that the current program can execute
> - /// concurrently. On some systems std::thread::hardware_concurrency() returns
> - /// the total number of cores, without taking affinity into consideration.
> - /// Returns 1 when LLVM is configured with LLVM_ENABLE_THREADS=OFF.
> - /// Fallback to std::thread::hardware_concurrency() if sched_getaffinity is
> - /// not available.
> - unsigned hardware_concurrency();
> -
> /// \brief Return the current thread id, as used in various OS system calls.
> /// Note that not all platforms guarantee that the value returned will be
> /// unique across the entire system, so portable code should not assume
>
> Modified: llvm/trunk/lib/Support/Parallel.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Parallel.cpp?rev=314922&r1=314921&r2=314922&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Support/Parallel.cpp (original)
> +++ llvm/trunk/lib/Support/Parallel.cpp Wed Oct 4 11:19:03 2017
> @@ -9,7 +9,6 @@
>
> #include "llvm/Support/Parallel.h"
> #include "llvm/Config/llvm-config.h"
> -#include "llvm/Support/Threading.h"
>
> #include <atomic>
> #include <stack>
> @@ -71,7 +70,8 @@ Executor *Executor::getDefaultExecutor()
> /// in filo order.
> class ThreadPoolExecutor : public Executor {
> public:
> - explicit ThreadPoolExecutor(unsigned ThreadCount = hardware_concurrency())
> + explicit ThreadPoolExecutor(
> + unsigned ThreadCount = std::thread::hardware_concurrency())
> : Done(ThreadCount) {
> // Spawn all but one of the threads in another thread as spawning threads
> // can take a while.
>
> Modified: llvm/trunk/lib/Support/ThreadPool.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/ThreadPool.cpp?rev=314922&r1=314921&r2=314922&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Support/ThreadPool.cpp (original)
> +++ llvm/trunk/lib/Support/ThreadPool.cpp Wed Oct 4 11:19:03 2017
> @@ -14,15 +14,14 @@
> #include "llvm/Support/ThreadPool.h"
>
> #include "llvm/Config/llvm-config.h"
> -#include "llvm/Support/Threading.h"
> #include "llvm/Support/raw_ostream.h"
>
> using namespace llvm;
>
> #if LLVM_ENABLE_THREADS
>
> -// Default to hardware_concurrency
> -ThreadPool::ThreadPool() : ThreadPool(hardware_concurrency()) {}
> +// Default to std::thread::hardware_concurrency
> +ThreadPool::ThreadPool() : ThreadPool(std::thread::hardware_concurrency()) {}
>
> ThreadPool::ThreadPool(unsigned ThreadCount)
> : ActiveThreads(0), EnableFlag(true) {
>
> Modified: llvm/trunk/lib/Support/Threading.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Threading.cpp?rev=314922&r1=314921&r2=314922&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Support/Threading.cpp (original)
> +++ llvm/trunk/lib/Support/Threading.cpp Wed Oct 4 11:19:03 2017
> @@ -47,8 +47,6 @@ void llvm::llvm_execute_on_thread(void (
>
> unsigned llvm::heavyweight_hardware_concurrency() { return 1; }
>
> -unsigned llvm::hardware_concurrency() { return 1; }
> -
> uint64_t llvm::get_threadid() { return 0; }
>
> uint32_t llvm::get_max_thread_name_length() { return 0; }
> @@ -73,18 +71,6 @@ unsigned llvm::heavyweight_hardware_conc
> return NumPhysical;
> }
>
> -unsigned llvm::hardware_concurrency() {
> -#ifdef HAVE_SCHED_GETAFFINITY
> - cpu_set_t Set;
> - if (sched_getaffinity(0, sizeof(Set), &Set))
> - return CPU_COUNT(&Set);
> -#endif
> - // Guard against std::thread::hardware_concurrency() returning 0.
> - if (unsigned Val = std::thread::hardware_concurrency())
> - return Val;
> - return 1;
> -}
> -
> // Include the platform-specific parts of this class.
> #ifdef LLVM_ON_UNIX
> #include "Unix/Threading.inc"
>
> Modified: llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp?rev=314922&r1=314921&r2=314922&view=diff
> ==============================================================================
> --- llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp (original)
> +++ llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp Wed Oct 4 11:19:03 2017
> @@ -211,8 +211,8 @@ static void mergeInstrProfile(const Weig
>
> // If NumThreads is not specified, auto-detect a good default.
> if (NumThreads == 0)
> - NumThreads =
> - std::min(hardware_concurrency(), unsigned((Inputs.size() + 1) / 2));
> + NumThreads = std::max(1U, std::min(std::thread::hardware_concurrency(),
> + unsigned(Inputs.size() / 2)));
>
> // Initialize the writer contexts.
> SmallVector<std::unique_ptr<WriterContext>, 4> Contexts;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list