summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2017-03-07 20:09:46 +0000
committerKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2017-03-07 20:09:46 +0000
commit4203ea320ee03bdc12dd63534b6f4fdba6885da8 (patch)
tree7a63836165d598655dfd7e36fb8ff96bba29e7c9
parente0341db179d7ee24405afb6ba500a0cead5c3860 (diff)
downloadbcm5719-llvm-4203ea320ee03bdc12dd63534b6f4fdba6885da8.tar.gz
bcm5719-llvm-4203ea320ee03bdc12dd63534b6f4fdba6885da8.zip
Fix C2712 build error on Windows
Move the __try/__except block outside of the set_thread_name function to avoid a conflict with object unwinding due to the use of the llvm::Storage. Differential Revision: https://reviews.llvm.org/D30707 llvm-svn: 297192
-rw-r--r--llvm/lib/Support/Windows/Threading.inc18
1 files changed, 12 insertions, 6 deletions
diff --git a/llvm/lib/Support/Windows/Threading.inc b/llvm/lib/Support/Windows/Threading.inc
index 93b2dfe0945..decb48887af 100644
--- a/llvm/lib/Support/Windows/Threading.inc
+++ b/llvm/lib/Support/Windows/Threading.inc
@@ -61,11 +61,8 @@ uint64_t llvm::get_threadid() {
uint32_t llvm::get_max_thread_name_length() { return 0; }
-void llvm::set_thread_name(const Twine &Name) {
#if defined(_MSC_VER)
- // Make sure the input is null terminated.
- SmallString<64> Storage;
- StringRef NameStr = Name.toNullTerminatedStringRef(Storage);
+static void SetThreadName(DWORD Id, LPCSTR Name) {
constexpr DWORD MS_VC_EXCEPTION = 0x406D1388;
#pragma pack(push, 8)
@@ -79,8 +76,8 @@ void llvm::set_thread_name(const Twine &Name) {
THREADNAME_INFO info;
info.dwType = 0x1000;
- info.szName = NameStr.data();
- info.dwThreadId = ::GetCurrentThreadId();
+ info.szName = Name;
+ info.dwThreadId = Id;
info.dwFlags = 0;
__try {
@@ -89,6 +86,15 @@ void llvm::set_thread_name(const Twine &Name) {
}
__except (EXCEPTION_EXECUTE_HANDLER) {
}
+}
+#endif
+
+void llvm::set_thread_name(const Twine &Name) {
+#if defined(_MSC_VER)
+ // Make sure the input is null terminated.
+ SmallString<64> Storage;
+ StringRef NameStr = Name.toNullTerminatedStringRef(Storage);
+ SetThreadName(::GetCurrentThreadId(), NameStr.data());
#endif
}
OpenPOWER on IntegriCloud