[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