diff options
author | Joachim Protze <protze@itc.rwth-aachen.de> | 2018-02-08 10:04:28 +0000 |
---|---|---|
committer | Joachim Protze <protze@itc.rwth-aachen.de> | 2018-02-08 10:04:28 +0000 |
commit | 9440c0ee3c7a85d5c06f229335c65d05ef5aa674 (patch) | |
tree | 7d1c303280a89d8abc8957925fcb4f4cd5be32a6 | |
parent | 1b8c08b6336aecb1349fd1ad04b0b231162a3f01 (diff) | |
download | bcm5719-llvm-9440c0ee3c7a85d5c06f229335c65d05ef5aa674.tar.gz bcm5719-llvm-9440c0ee3c7a85d5c06f229335c65d05ef5aa674.zip |
[OMPT] Add tool_not_available testcase
Add a testcase that checks wheter the runtime can handle an ompt_start_tool
method that returns NULL indicating that no tool shall be loaded.
All tool_available testcases need a separate folder to avoid file conflicts for
the generated tools.
Differential Revision: https://reviews.llvm.org/D41904
llvm-svn: 324587
-rw-r--r-- | openmp/runtime/test/ompt/loadtool/tool_available/tool_available.c (renamed from openmp/runtime/test/ompt/loadtool/tool_available.c) | 0 | ||||
-rw-r--r-- | openmp/runtime/test/ompt/loadtool/tool_not_available/tool_not_available.c | 69 |
2 files changed, 69 insertions, 0 deletions
diff --git a/openmp/runtime/test/ompt/loadtool/tool_available.c b/openmp/runtime/test/ompt/loadtool/tool_available/tool_available.c index dc00b033daa..dc00b033daa 100644 --- a/openmp/runtime/test/ompt/loadtool/tool_available.c +++ b/openmp/runtime/test/ompt/loadtool/tool_available/tool_available.c diff --git a/openmp/runtime/test/ompt/loadtool/tool_not_available/tool_not_available.c b/openmp/runtime/test/ompt/loadtool/tool_not_available/tool_not_available.c new file mode 100644 index 00000000000..e25e7374055 --- /dev/null +++ b/openmp/runtime/test/ompt/loadtool/tool_not_available/tool_not_available.c @@ -0,0 +1,69 @@ +// The OpenMP standard defines 3 ways of providing ompt_start_tool: +// 1. "statically-linking the tool’s definition of ompt_start_tool into an OpenMP application" +// RUN: %libomp-compile -DCODE -DTOOL && %libomp-run | FileCheck %s + +// Note: We should compile the tool without -fopenmp as other tools developer +// would do. Otherwise this test may pass for the wrong reasons on Darwin. +// RUN: %clang %flags -DTOOL -shared -fPIC %s -o %T/tool.so +// 2. "introducing a dynamically-linked library that includes the tool’s definition of ompt_start_tool into the application’s address space" +// 2.1 Link with tool during compilation +// RUN: %libomp-compile -DCODE -Wl,--no-as-needed %T/tool.so && %libomp-run | FileCheck %s +// 2.2 Link with tool during compilation, but AFTER the runtime +// RUN: %libomp-compile -DCODE -lomp -Wl,--no-as-needed %T/tool.so && %libomp-run | FileCheck %s +// 2.3 Inject tool via the dynamic loader +// RUN: %libomp-compile -DCODE && %preload-tool %libomp-run | FileCheck %s + +// 3. "providing the name of a dynamically-linked library appropriate for the architecture and operating system used by the application in the tool-libraries-var ICV" +// RUN: %libomp-compile -DCODE && env OMP_TOOL_LIBRARIES=%T/tool.so %libomp-run | FileCheck %s + +// REQUIRES: ompt + +/* + * This file contains code for an OMPT shared library tool to be + * loaded and the code for the OpenMP executable. + * -DTOOL enables the code for the tool during compilation + * -DCODE enables the code for the executable during compilation + */ + +#ifdef CODE +#include "stdio.h" +#include "omp.h" +#include "ompt.h" + +int main() +{ + #pragma omp parallel num_threads(2) + { + #pragma omp master + { + int result = omp_control_tool(omp_control_tool_start, 0, NULL); + printf("0: control_tool()=%d\n", result); + } + } + + + // Check if libomp supports the callbacks for this test. + // CHECK-NOT: {{^}}0: Could not register callback + + // CHECK: {{^}}0: Do not initialize tool + // CHECK: {{^}}0: control_tool()=-2 + + + return 0; +} + +#endif /* CODE */ + +#ifdef TOOL + +#include <ompt.h> +#include "stdio.h" + +ompt_start_tool_result_t* ompt_start_tool( + unsigned int omp_version, + const char *runtime_version) +{ + printf("0: Do not initialize tool\n"); + return NULL; +} +#endif /* TOOL */ |