summaryrefslogtreecommitdiff
path: root/contrib/llvm-project/openmp/runtime/src/ompt-general.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm-project/openmp/runtime/src/ompt-general.cpp')
-rw-r--r--contrib/llvm-project/openmp/runtime/src/ompt-general.cpp39
1 files changed, 26 insertions, 13 deletions
diff --git a/contrib/llvm-project/openmp/runtime/src/ompt-general.cpp b/contrib/llvm-project/openmp/runtime/src/ompt-general.cpp
index 00bf606bb1d5..22eac2ebf7b8 100644
--- a/contrib/llvm-project/openmp/runtime/src/ompt-general.cpp
+++ b/contrib/llvm-project/openmp/runtime/src/ompt-general.cpp
@@ -268,6 +268,22 @@ ompt_try_start_tool(unsigned int omp_version, const char *runtime_version) {
}
__kmp_str_free(&libs);
}
+ if (ret)
+ return ret;
+
+#if KMP_OS_UNIX
+ { // Non-standard: load archer tool if application is built with TSan
+ const char *fname = "libarcher.so";
+ void *h = dlopen(fname, RTLD_LAZY);
+ if (h) {
+ start_tool = (ompt_start_tool_t)dlsym(h, "ompt_start_tool");
+ if (start_tool)
+ ret = (*start_tool)(omp_version, runtime_version);
+ if (ret)
+ return ret;
+ }
+ }
+#endif
return ret;
}
@@ -430,10 +446,8 @@ OMPT_API_ROUTINE ompt_set_result_t ompt_set_callback(ompt_callbacks_t which,
#define ompt_event_macro(event_name, callback_type, event_id) \
case event_name: \
- if (ompt_event_implementation_status(event_name)) { \
- ompt_callbacks.ompt_callback(event_name) = (callback_type)callback; \
- ompt_enabled.event_name = (callback != 0); \
- } \
+ ompt_callbacks.ompt_callback(event_name) = (callback_type)callback; \
+ ompt_enabled.event_name = (callback != 0); \
if (callback) \
return ompt_event_implementation_status(event_name); \
else \
@@ -456,16 +470,15 @@ OMPT_API_ROUTINE int ompt_get_callback(ompt_callbacks_t which,
switch (which) {
#define ompt_event_macro(event_name, callback_type, event_id) \
- case event_name: \
- if (ompt_event_implementation_status(event_name)) { \
- ompt_callback_t mycb = \
- (ompt_callback_t)ompt_callbacks.ompt_callback(event_name); \
- if (ompt_enabled.event_name && mycb) { \
- *callback = mycb; \
- return ompt_get_callback_success; \
- } \
+ case event_name: { \
+ ompt_callback_t mycb = \
+ (ompt_callback_t)ompt_callbacks.ompt_callback(event_name); \
+ if (ompt_enabled.event_name && mycb) { \
+ *callback = mycb; \
+ return ompt_get_callback_success; \
} \
- return ompt_get_callback_failure;
+ return ompt_get_callback_failure; \
+ }
FOREACH_OMPT_EVENT(ompt_event_macro)