Do not block on explicit task depending on proxy task
authorJonas Hahnfeld <Hahnfeld@itc.rwth-aachen.de>
Mon, 8 Aug 2016 10:08:14 +0000 (10:08 +0000)
committerJonas Hahnfeld <Hahnfeld@itc.rwth-aachen.de>
Mon, 8 Aug 2016 10:08:14 +0000 (10:08 +0000)
commitbedc371c9da61289d82b18acbe5f7bb0fc1d9869
treec04c0ac9427c2229736b2265c38430060ae0e6c5
parent69f8511f8f47c7fab6c8dda663d394b4176f93e5
Do not block on explicit task depending on proxy task

Consider the following code:

    int dep;
    #pragma omp target nowait depend(out: dep)
    {
        sleep(1);
    }
    #pragma omp task depend(in: dep)
    {
        printf("Task with dependency\n");
    }
    printf("Doing some work...\n");

In its current state the runtime will block on the second task and not
continue execution.

Differential Revision: https://reviews.llvm.org/D23116

llvm-svn: 277992
openmp/runtime/src/kmp_taskdeps.cpp
openmp/runtime/src/kmp_tasking.c
openmp/runtime/test/tasking/bug_proxy_task_dep_waiting.c [new file with mode: 0644]