[Openmp-commits] [PATCH] D41171: [OMPT] Handle null pointer correctly in set_callback

Simon Convent via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Thu Dec 14 02:50:39 PST 2017


sconvent updated this revision to Diff 126920.
sconvent added a comment.

Added testcase


https://reviews.llvm.org/D41171

Files:
  runtime/src/ompt-general.cpp
  runtime/test/ompt/misc/unset_callback.c


Index: runtime/test/ompt/misc/unset_callback.c
===================================================================
--- /dev/null
+++ runtime/test/ompt/misc/unset_callback.c
@@ -0,0 +1,30 @@
+// RUN: %libomp-compile-and-run | FileCheck %s
+// REQUIRES: ompt
+#include "callback.h"
+#include <omp.h>
+
+int main()
+{
+  int x = 0;
+  #pragma omp parallel num_threads(1)
+  {
+
+  }
+  ompt_set_callback(ompt_callback_parallel_begin, NULL);
+  #pragma omp parallel num_threads(1)
+  {
+
+  }
+
+  // Check if libomp supports the callbacks for this test.
+  // CHECK-NOT: {{^}}0: Could not register callback 'ompt_callback_idle'
+
+  // CHECK: 0: NULL_POINTER=[[NULL:.*$]]
+
+  // CHECK: {{^}}[[THREAD_ID:[0-9]+]]: ompt_event_parallel_begin:
+  // CHECK: {{^}}[[THREAD_ID]]: ompt_event_parallel_end:
+  // CHECK-NOT: {{^}}[[THREAD_ID]]: ompt_event_parallel_begin:
+  // CHECK: {{^}}[[THREAD_ID]]: ompt_event_parallel_end:
+
+  return 0;
+}
Index: runtime/src/ompt-general.cpp
===================================================================
--- runtime/src/ompt-general.cpp
+++ runtime/src/ompt-general.cpp
@@ -411,9 +411,15 @@
   case event_name:                                                             \
     if (ompt_event_implementation_status(event_name)) {                        \
       ompt_callbacks.ompt_callback(event_name) = (callback_type)callback;      \
-      ompt_enabled.event_name = 1;                                             \
+      if (callback)                                                            \
+        ompt_enabled.event_name = 1;                                           \
+      else                                                                     \
+        ompt_enabled.event_name = 0;                                           \
     }                                                                          \
-    return ompt_event_implementation_status(event_name);
+    if (callback)                                                              \
+      return ompt_event_implementation_status(event_name);                     \
+    else                                                                       \
+      return ompt_set_always;
 
     FOREACH_OMPT_EVENT(ompt_event_macro)
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D41171.126920.patch
Type: text/x-patch
Size: 2246 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/openmp-commits/attachments/20171214/90be6c2b/attachment.bin>


More information about the Openmp-commits mailing list