pirama created this revision. pirama added reviewers: EricWF, srhines, danalbert. Herald added subscribers: ldionne, christof.
This function is passed as the __at_exit parameter to __libcpp_tls_create. This parameter is marked with the _LIBCPP_TLS_DESTRUCTOR_CC attribute. The macro is empty for pthread, and set to __stdcall for other threading models. __stdcall is in turn emptry for most cases. That's likely why this doesn't fail now. The one exception is Windows on i686 with the Win32 threading API, where the stdcall calling convention is used. Repository: rCXXA libc++abi https://reviews.llvm.org/D48742 Files: src/cxa_thread_atexit.cpp Index: src/cxa_thread_atexit.cpp =================================================================== --- src/cxa_thread_atexit.cpp +++ src/cxa_thread_atexit.cpp @@ -68,7 +68,7 @@ // Used to trigger destructors on thread exit; value is ignored std::__libcpp_tls_key dtors_key; - void run_dtors(void*) { + void _LIBCPP_TLS_DESTRUCTOR_CC run_dtors(void*) { while (auto head = dtors) { dtors = head->next; head->dtor(head->obj);
Index: src/cxa_thread_atexit.cpp =================================================================== --- src/cxa_thread_atexit.cpp +++ src/cxa_thread_atexit.cpp @@ -68,7 +68,7 @@ // Used to trigger destructors on thread exit; value is ignored std::__libcpp_tls_key dtors_key; - void run_dtors(void*) { + void _LIBCPP_TLS_DESTRUCTOR_CC run_dtors(void*) { while (auto head = dtors) { dtors = head->next; head->dtor(head->obj);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits