[llvm] Stop including unordered_map (NFC)
[llvm-project.git] / openmp / runtime / test / tasking / omp_task.c
blob5703225932d8ff6f47b4ff4b64b4df2f2524dcfb
1 // RUN: %libomp-compile-and-run
2 #include <stdio.h>
3 #include <math.h>
4 #include "omp_testsuite.h"
5 #include "omp_my_sleep.h"
7 int test_omp_task()
9 int tids[NUM_TASKS];
10 int i;
12 #pragma omp parallel
14 #pragma omp single
16 for (i = 0; i < NUM_TASKS; i++) {
17 /* First we have to store the value of the loop index in a new variable
18 * which will be private for each task because otherwise it will be overwritten
19 * if the execution of the task takes longer than the time which is needed to
20 * enter the next step of the loop!
22 int myi;
23 myi = i;
24 #pragma omp task
26 my_sleep (SLEEPTIME);
27 tids[myi] = omp_get_thread_num();
28 } /* end of omp task */
29 } /* end of for */
30 } /* end of single */
31 } /*end of parallel */
33 /* Now we ckeck if more than one thread executed the tasks. */
34 for (i = 1; i < NUM_TASKS; i++) {
35 if (tids[0] != tids[i])
36 return 1;
38 return 0;
39 } /* end of check_parallel_for_private */
41 int main()
43 int i;
44 int num_failed=0;
46 if (omp_get_max_threads() < 2)
47 omp_set_num_threads(8);
49 for(i = 0; i < REPETITIONS; i++) {
50 if(!test_omp_task()) {
51 num_failed++;
54 return num_failed;