//===-- llvm/Support/thread.h - Wrapper for <thread> ------------*- C++ -*-===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This header is a wrapper for <thread> that works around problems with the
// MSVC headers when exceptions are disabled. It also provides llvm::thread,
// which is either a typedef of std::thread or a replacement that calls the
// function synchronously depending on the value of LLVM_ENABLE_THREADS.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_SUPPORT_THREAD_H
#define LLVM_SUPPORT_THREAD_H

#include "llvm/Config/llvm-config.h"

#if LLVM_ENABLE_THREADS

#ifdef _MSC_VER
// concrt.h depends on eh.h for __uncaught_exception declaration
// even if we disable exceptions.
#include <eh.h>

// Suppress 'C++ exception handler used, but unwind semantics are not enabled.'
#pragma warning(push)
#pragma warning(disable:4530)
#endif

#include <thread>

#ifdef _MSC_VER
#pragma warning(pop)
#endif

namespace llvm {
typedef std::thread thread;
}

#else // !LLVM_ENABLE_THREADS

#include <utility>

namespace llvm {

struct thread {
  thread() {}
  thread(thread &&other) {}
  template <class Function, class... Args>
  explicit thread(Function &&f, Args &&... args) {
    f(std::forward<Args>(args)...);
  }
  thread(const thread &) = delete;

  void join() {}
  static unsigned hardware_concurrency() { return 1; }
};

}

#endif // LLVM_ENABLE_THREADS

#endif
