1// RUN: %gdb-compile-and-run 2>&1 | tee %t.out | FileCheck %s
2
3#include "../ompt_plugin.h"
4#include <omp.h>
5#include <pthread.h>
6#include <stdio.h>
7#include <unistd.h>
8
9void f(int i) {
10 if (i <= 0) {
11 ompd_tool_test(n: 0);
12 } else {
13 printf(format: "f(%i) start task 1\n", i);
14#pragma omp task
15 f(i: i - 1);
16 printf(format: "f(%i) start task 2\n", i);
17#pragma omp task
18 f(i: i - 1);
19 printf(format: "f(%i) start task 3\n", i);
20#pragma omp task
21 f(i: i - 1);
22#pragma omp taskwait
23 }
24}
25
26int main() {
27 printf(format: "Application: Process %d started.\n", getpid());
28 omp_set_num_threads(8);
29 omp_set_max_active_levels(10);
30
31#pragma omp parallel sections
32 { f(i: 4); }
33
34 return 0;
35}
36
37// CHECK-NOT: OMPT-OMPD mismatch
38// CHECK-NOT: Python Exception
39// CHECK-NOT: The program is not being run.
40

source code of openmp/libompd/test/openmp_examples/example_task.c