[Openmp-commits] [openmp] r258990 - Restore th_current_task first as suggested by John Mellor-Crummey
Jonathan Peyton via Openmp-commits
openmp-commits at lists.llvm.org
Wed Jan 27 13:20:26 PST 2016
Author: jlpeyton
Date: Wed Jan 27 15:20:26 2016
New Revision: 258990
URL: http://llvm.org/viewvc/llvm-project?rev=258990&view=rev
Log:
Restore th_current_task first as suggested by John Mellor-Crummey
If an asynchronous inquiry peers into the runtime system
it doesn't see the freed task as the current task.
Modified:
openmp/trunk/runtime/src/kmp_tasking.c
Modified: openmp/trunk/runtime/src/kmp_tasking.c
URL: http://llvm.org/viewvc/llvm-project/openmp/trunk/runtime/src/kmp_tasking.c?rev=258990&r1=258989&r2=258990&view=diff
==============================================================================
--- openmp/trunk/runtime/src/kmp_tasking.c (original)
+++ openmp/trunk/runtime/src/kmp_tasking.c Wed Jan 27 15:20:26 2016
@@ -690,13 +690,12 @@ __kmp_task_finish( kmp_int32 gtid, kmp_t
}
// Free this task and then ancestor tasks if they have no children.
+ // Restore th_current_task first as suggested by John:
+ // johnmc: if an asynchronous inquiry peers into the runtime system
+ // it doesn't see the freed task as the current task.
+ thread->th.th_current_task = resumed_task;
__kmp_free_task_and_ancestors(gtid, taskdata, thread);
- // FIXME johnmc: I this statement should be before the last one so if an
- // asynchronous inquiry peers into the runtime system it doesn't see the freed
- // task as the current task
- __kmp_threads[ gtid ] -> th.th_current_task = resumed_task; // restore current_task
-
// TODO: GEH - make sure root team implicit task is initialized properly.
// KMP_DEBUG_ASSERT( resumed_task->td_flags.executing == 0 );
resumed_task->td_flags.executing = 1; // resume previous task
More information about the Openmp-commits
mailing list