[llvm] r211067 - Remove some more code out into a separate CL.
Zachary Turner
zturner at google.com
Tue Jun 17 09:45:22 PDT 2014
This change was reverted in r211072 due to accidentally pushing a whole
branch instead of a single CL.
On Mon, Jun 16, 2014 at 3:40 PM, Zachary Turner <zturner at google.com> wrote:
> Author: zturner
> Date: Mon Jun 16 17:40:17 2014
> New Revision: 211067
>
> URL: http://llvm.org/viewvc/llvm-project?rev=211067&view=rev
> Log:
> Remove some more code out into a separate CL.
>
> Modified:
> llvm/trunk/include/llvm-c/Core.h
> llvm/trunk/include/llvm/Support/ManagedStatic.h
> llvm/trunk/include/llvm/Support/Threading.h
> llvm/trunk/lib/IR/Core.cpp
> llvm/trunk/lib/Support/ManagedStatic.cpp
> llvm/trunk/lib/Support/Threading.cpp
> llvm/trunk/lib/Support/Timer.cpp
> llvm/trunk/unittests/Support/ManagedStatic.cpp
>
> Modified: llvm/trunk/include/llvm-c/Core.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm-c/Core.h?rev=211067&r1=211066&r2=211067&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm-c/Core.h (original)
> +++ llvm/trunk/include/llvm-c/Core.h Mon Jun 16 17:40:17 2014
> @@ -2848,16 +2848,13 @@ void LLVMDisposePassManager(LLVMPassMana
> * @{
> */
>
> -/** Allocate and initialize structures needed to make LLVM safe for
> - multithreading. The return value indicates whether multithreaded
> - initialization succeeded. Must be executed in isolation from all
> - other LLVM api calls.
> - @see llvm::llvm_start_multithreaded */
> +/** Deprecated: Multi-threading can only be enabled/disabled with the
> compile
> + time define LLVM_ENABLE_THREADS. This function always returns
> + LLVMIsMultithreaded(). */
> LLVMBool LLVMStartMultithreaded(void);
>
> -/** Deallocate structures necessary to make LLVM safe for multithreading.
> - Must be executed in isolation from all other LLVM api calls.
> - @see llvm::llvm_stop_multithreaded */
> +/** Deprecated: Multi-threading can only be enabled/disabled with the
> compile
> + time define LLVM_ENABLE_THREADS. */
> void LLVMStopMultithreaded(void);
>
> /** Check whether LLVM is executing in thread-safe mode or not.
>
> Modified: llvm/trunk/include/llvm/Support/ManagedStatic.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/ManagedStatic.h?rev=211067&r1=211066&r2=211067&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/ManagedStatic.h (original)
> +++ llvm/trunk/include/llvm/Support/ManagedStatic.h Mon Jun 16 17:40:17
> 2014
> @@ -103,9 +103,6 @@ void llvm_shutdown();
> /// llvm_shutdown() when it is destroyed.
> struct llvm_shutdown_obj {
> llvm_shutdown_obj() { }
> - explicit llvm_shutdown_obj(bool multithreaded) {
> - if (multithreaded) llvm_start_multithreaded();
> - }
> ~llvm_shutdown_obj() { llvm_shutdown(); }
> };
>
>
> Modified: llvm/trunk/include/llvm/Support/Threading.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/Threading.h?rev=211067&r1=211066&r2=211067&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/Threading.h (original)
> +++ llvm/trunk/include/llvm/Support/Threading.h Mon Jun 16 17:40:17 2014
> @@ -7,7 +7,8 @@
> //
>
> //===----------------------------------------------------------------------===//
> //
> -// TThis file defines llvm_start_multithreaded() and friends.
> +// This file defines helper functions for running LLVM in a multi-threaded
> +// environment.
> //
>
> //===----------------------------------------------------------------------===//
>
> @@ -17,25 +18,12 @@
> #include "llvm/Support/Mutex.h"
>
> namespace llvm {
> - /// llvm_get_global_lock - returns the llvm global lock object.
> - sys::Mutex& llvm_get_global_lock();
>
> - /// llvm_start_multithreaded - Allocate and initialize structures
> needed to
> - /// make LLVM safe for multithreading. The return value indicates
> whether
> - /// multithreaded initialization succeeded. LLVM will still be
> operational
> - /// on "failed" return, and will still be safe for hosting threading
> - /// applications in the JIT, but will not be safe for concurrent calls
> to the
> - /// LLVM APIs.
> - /// THIS MUST EXECUTE IN ISOLATION FROM ALL OTHER LLVM API CALLS.
> - bool llvm_start_multithreaded();
> -
> - /// llvm_stop_multithreaded - Deallocate structures necessary to make
> LLVM
> - /// safe for multithreading.
> - /// THIS MUST EXECUTE IN ISOLATION FROM ALL OTHER LLVM API CALLS.
> - void llvm_stop_multithreaded();
> + /// llvm_get_global_lock() - returns the llvm global lock object.
> + sys::Mutex &llvm_get_global_lock();
>
> - /// llvm_is_multithreaded - Check whether LLVM is executing in
> thread-safe
> - /// mode or not.
> + /// llvm_is_multithreaded() - returns true if LLVM is compiled with
> support
> + /// for multiple threads, and false otherwise.
> bool llvm_is_multithreaded();
>
> /// llvm_execute_on_thread - Execute the given \p UserFn on a separate
>
> Modified: llvm/trunk/lib/IR/Core.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/Core.cpp?rev=211067&r1=211066&r2=211067&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/IR/Core.cpp (original)
> +++ llvm/trunk/lib/IR/Core.cpp Mon Jun 16 17:40:17 2014
> @@ -2702,11 +2702,10 @@ void LLVMDisposePassManager(LLVMPassMana
> /*===-- Threading
> ------------------------------------------------------===*/
>
> LLVMBool LLVMStartMultithreaded() {
> - return llvm_start_multithreaded();
> + return LLVMIsMultithreaded();
> }
>
> void LLVMStopMultithreaded() {
> - llvm_stop_multithreaded();
> }
>
> LLVMBool LLVMIsMultithreaded() {
>
> Modified: llvm/trunk/lib/Support/ManagedStatic.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/ManagedStatic.cpp?rev=211067&r1=211066&r2=211067&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Support/ManagedStatic.cpp (original)
> +++ llvm/trunk/lib/Support/ManagedStatic.cpp Mon Jun 16 17:40:17 2014
> @@ -24,7 +24,7 @@ void ManagedStaticBase::RegisterManagedS
> void (*Deleter)(void*))
> const {
> assert(Creator);
> if (llvm_is_multithreaded()) {
> - llvm::MutexGuard Lock(llvm::llvm_get_global_lock());
> + llvm::MutexGuard Lock(llvm_get_global_lock());
>
> if (!Ptr) {
> void* tmp = Creator();
> @@ -76,6 +76,4 @@ void ManagedStaticBase::destroy() const
> void llvm::llvm_shutdown() {
> while (StaticList)
> StaticList->destroy();
> -
> - if (llvm_is_multithreaded()) llvm_stop_multithreaded();
> }
>
> Modified: llvm/trunk/lib/Support/Threading.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Threading.cpp?rev=211067&r1=211066&r2=211067&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Support/Threading.cpp (original)
> +++ llvm/trunk/lib/Support/Threading.cpp Mon Jun 16 17:40:17 2014
> @@ -7,7 +7,8 @@
> //
>
> //===----------------------------------------------------------------------===//
> //
> -// This file implements llvm_start_multithreaded() and friends.
> +// This file implements helper functions for running LLVM in a
> multi-threaded
> +// environment.
> //
>
> //===----------------------------------------------------------------------===//
>
> @@ -19,43 +20,19 @@
>
> using namespace llvm;
>
> -static bool multithreaded_mode = false;
> -
> sys::Mutex& llvm::llvm_get_global_lock() {
> static sys::Mutex global_lock;
> return global_lock;
> }
>
> -bool llvm::llvm_start_multithreaded() {
> +bool llvm::llvm_is_multithreaded() {
> #if LLVM_ENABLE_THREADS != 0
> - assert(!multithreaded_mode && "Already multithreaded!");
> - multithreaded_mode = true;
> -
> - // We fence here to ensure that all initialization is complete BEFORE we
> - // return from llvm_start_multithreaded().
> - sys::MemoryFence();
> return true;
> #else
> return false;
> #endif
> }
>
> -void llvm::llvm_stop_multithreaded() {
> -#if LLVM_ENABLE_THREADS != 0
> - assert(multithreaded_mode && "Not currently multithreaded!");
> -
> - // We fence here to insure that all threaded operations are complete
> BEFORE we
> - // return from llvm_stop_multithreaded().
> - sys::MemoryFence();
> -
> - multithreaded_mode = false;
> -#endif
> -}
> -
> -bool llvm::llvm_is_multithreaded() {
> - return multithreaded_mode;
> -}
> -
> #if LLVM_ENABLE_THREADS != 0 && defined(HAVE_PTHREAD_H)
> #include <pthread.h>
>
>
> Modified: llvm/trunk/lib/Support/Timer.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Timer.cpp?rev=211067&r1=211066&r2=211067&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/Support/Timer.cpp (original)
> +++ llvm/trunk/lib/Support/Timer.cpp Mon Jun 16 17:40:17 2014
> @@ -18,7 +18,7 @@
> #include "llvm/Support/FileSystem.h"
> #include "llvm/Support/Format.h"
> #include "llvm/Support/ManagedStatic.h"
> -#include "llvm/support/MutexGuard.h"
> +#include "llvm/Support/MutexGuard.h"
> #include "llvm/Support/Process.h"
> #include "llvm/Support/raw_ostream.h"
> using namespace llvm;
>
> Modified: llvm/trunk/unittests/Support/ManagedStatic.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/ManagedStatic.cpp?rev=211067&r1=211066&r2=211067&view=diff
>
> ==============================================================================
> --- llvm/trunk/unittests/Support/ManagedStatic.cpp (original)
> +++ llvm/trunk/unittests/Support/ManagedStatic.cpp Mon Jun 16 17:40:17 2014
> @@ -47,7 +47,6 @@ TEST(Initialize, MultipleThreads) {
> void *p1 = test1::allocate_stack(a1);
> void *p2 = test1::allocate_stack(a2);
>
> - llvm_start_multithreaded();
> pthread_t t1, t2;
> pthread_create(&t1, &a1, test1::helper, nullptr);
> pthread_create(&t2, &a2, test1::helper, nullptr);
> @@ -55,7 +54,6 @@ TEST(Initialize, MultipleThreads) {
> pthread_join(t2, nullptr);
> free(p1);
> free(p2);
> - llvm_stop_multithreaded();
> }
> #endif
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140617/bcca3955/attachment.html>
More information about the llvm-commits
mailing list