[Openmp-commits] [PATCH] D70412: [OpenMP][Tool] Runtime warning for missing TSan-option
Joachim Protze via Phabricator via Openmp-commits
openmp-commits at lists.llvm.org
Tue Jan 14 12:02:49 PST 2020
This revision was not accepted when it landed; it landed in state "Needs Review".
This revision was automatically updated to reflect the committed changes.
Closed by commit rG2d4571bf3060: [OpenMP][Tool] Runtime warning for missing TSan-option (authored by protze.joachim).
Herald added a project: OpenMP.
Changed prior to commit:
https://reviews.llvm.org/D70412?vs=229940&id=238066#toc
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D70412/new/
https://reviews.llvm.org/D70412
Files:
openmp/CREDITS.txt
openmp/tools/archer/ompt-tsan.cpp
Index: openmp/tools/archer/ompt-tsan.cpp
===================================================================
--- openmp/tools/archer/ompt-tsan.cpp
+++ openmp/tools/archer/ompt-tsan.cpp
@@ -82,6 +82,31 @@
}
};
+class TsanFlags {
+public:
+ int ignore_noninstrumented_modules;
+
+ TsanFlags(const char *env) : ignore_noninstrumented_modules(0) {
+ if (env) {
+ std::vector<std::string> tokens;
+ std::string token;
+ std::string str(env);
+ std::istringstream iss(str);
+ while (std::getline(iss, token, ' '))
+ tokens.push_back(token);
+
+ for (std::vector<std::string>::iterator it = tokens.begin();
+ it != tokens.end(); ++it) {
+ // we are interested in ignore_noninstrumented_modules to print a
+ // warning
+ if (sscanf(it->c_str(), "ignore_noninstrumented_modules=%d",
+ &ignore_noninstrumented_modules))
+ continue;
+ }
+ }
+ }
+};
+
#if (LLVM_VERSION) >= 40
extern "C" {
int __attribute__((weak)) __archer_get_omp_status();
@@ -89,6 +114,7 @@
}
#endif
ArcherFlags *archer_flags;
+TsanFlags *tsan_flags;
// The following definitions are pasted from "llvm/Support/Compiler.h" to allow
// the code
@@ -838,6 +864,8 @@
ompt_data_t *tool_data) {
const char *options = getenv("ARCHER_OPTIONS");
archer_flags = new ArcherFlags(options);
+ options = getenv("TSAN_OPTIONS");
+ tsan_flags = new TsanFlags(options);
ompt_set_callback_t ompt_set_callback =
(ompt_set_callback_t)lookup("ompt_set_callback");
@@ -869,6 +897,12 @@
SET_CALLBACK_T(mutex_acquired, mutex);
SET_CALLBACK_T(mutex_released, mutex);
SET_OPTIONAL_CALLBACK_T(reduction, sync_region, hasReductionCallback, ompt_set_never);
+
+ if (!tsan_flags->ignore_noninstrumented_modules)
+ fprintf(
+ stderr,
+ "Warning: please export TSAN_OPTIONS='ignore_noninstrumented_modules=1' "
+ "to avoid false positive reports from the OpenMP runtime.!\n");
return 1; // success
}
Index: openmp/CREDITS.txt
===================================================================
--- openmp/CREDITS.txt
+++ openmp/CREDITS.txt
@@ -53,6 +53,10 @@
E: steven at uplinklabs.net
D: Patches for the ARM architecture and removal of several inconsistencies.
+N: Joachim Protze
+E: protze at itc.rwth-aachen.de
+D: OpenMP Tools Interface, Archer tool
+
N: Alp Toker
E: alp at nuanti.com
D: Making build work for FreeBSD.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D70412.238066.patch
Type: text/x-patch
Size: 2468 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20200114/73077f38/attachment.bin>
More information about the Openmp-commits
mailing list