mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-14 11:39:35 +00:00
tsan: add __has_feature(thread_sanitizer)
llvm-svn: 170314
This commit is contained in:
parent
41ffe3db59
commit
a53767ea22
@ -68,6 +68,20 @@ Currently, ThreadSanitizer symbolizes its output using an external
|
||||
#0 pthread_create tsan_interceptors.cc:705 (exe+0x00000000c790)
|
||||
#1 main tiny_race.c:9 (exe+0x00000000a3a4)
|
||||
|
||||
``__has_feature(thread_sanitizer)``
|
||||
------------------------------------
|
||||
|
||||
In some cases one may need to execute different code depending on whether
|
||||
ThreadSanitizer is enabled.
|
||||
:ref:`\_\_has\_feature <langext-__has_feature-__has_extension>` can be used for
|
||||
this purpose.
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
#if defined(__has_feature) && __has_feature(thread_sanitizer)
|
||||
// code that builds only under ThreadSanitizer
|
||||
#endif
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
|
||||
|
@ -780,6 +780,7 @@ static bool HasFeature(const Preprocessor &PP, const IdentifierInfo *II) {
|
||||
.Case("cxx_exceptions", LangOpts.Exceptions)
|
||||
.Case("cxx_rtti", LangOpts.RTTI)
|
||||
.Case("enumerator_attributes", true)
|
||||
.Case("thread_sanitizer", LangOpts.SanitizeThread)
|
||||
// Objective-C features
|
||||
.Case("objc_arr", LangOpts.ObjCAutoRefCount) // FIXME: REMOVE?
|
||||
.Case("objc_arc", LangOpts.ObjCAutoRefCount)
|
||||
|
11
clang/test/Lexer/has_feature_thread_sanitizer.cpp
Normal file
11
clang/test/Lexer/has_feature_thread_sanitizer.cpp
Normal file
@ -0,0 +1,11 @@
|
||||
// RUN: %clang_cc1 -E -fsanitize=thread %s -o - | FileCheck --check-prefix=CHECK-TSAN %s
|
||||
// RUN: %clang_cc1 -E %s -o - | FileCheck --check-prefix=CHECK-NO-TSAN %s
|
||||
|
||||
#if __has_feature(thread_sanitizer)
|
||||
int ThreadSanitizerEnabled();
|
||||
#else
|
||||
int ThreadSanitizerDisabled();
|
||||
#endif
|
||||
|
||||
// CHECK-TSAN: ThreadSanitizerEnabled
|
||||
// CHECK-NO-TSAN: ThreadSanitizerDisabled
|
Loading…
Reference in New Issue
Block a user