[OpenMP][stats] reset serial state when re-entering serial region
authorPeyton, Jonathan L <jonathan.l.peyton@intel.com>
Thu, 5 Nov 2020 18:34:39 +0000 (12:34 -0600)
committerPeyton, Jonathan L <jonathan.l.peyton@intel.com>
Tue, 17 Nov 2020 16:09:56 +0000 (10:09 -0600)
Differential Revision: https://reviews.llvm.org/D90867

openmp/runtime/src/kmp_csupport.cpp

index 5d6f168..ead7855 100644 (file)
@@ -324,6 +324,7 @@ void __kmpc_fork_call(ident_t *loc, kmp_int32 argc, kmpc_micro microtask, ...) {
 #if KMP_STATS_ENABLED
   if (previous_state == stats_state_e::SERIAL_REGION) {
     KMP_EXCHANGE_PARTITIONED_TIMER(OMP_serial);
+    KMP_SET_THREAD_STATE(previous_state);
   } else {
     KMP_POP_PARTITIONED_TIMER();
   }
@@ -436,6 +437,7 @@ void __kmpc_fork_teams(ident_t *loc, kmp_int32 argc, kmpc_micro microtask,
 #if KMP_STATS_ENABLED
   if (previous_state == stats_state_e::SERIAL_REGION) {
     KMP_EXCHANGE_PARTITIONED_TIMER(OMP_serial);
+    KMP_SET_THREAD_STATE(previous_state);
   } else {
     KMP_POP_PARTITIONED_TIMER();
   }