xref: /llvm-project/openmp/libompd/test/openmp_examples/fibonacci.c (revision 1099498e3f35b2ad4b021ba3888b590259124e74)
1*1099498eSVignesh Balasubramanian // RUN: %gdb-compile-and-run 2>&1 | tee %t.out | FileCheck %s
2*1099498eSVignesh Balasubramanian 
3*1099498eSVignesh Balasubramanian #include "../ompt_plugin.h"
4*1099498eSVignesh Balasubramanian #include <omp.h>
5*1099498eSVignesh Balasubramanian #include <stdio.h>
6*1099498eSVignesh Balasubramanian #include <stdlib.h>
7*1099498eSVignesh Balasubramanian 
fib(int n)8*1099498eSVignesh Balasubramanian int fib(int n) {
9*1099498eSVignesh Balasubramanian   int i, j;
10*1099498eSVignesh Balasubramanian   if (n < 2) {
11*1099498eSVignesh Balasubramanian     ompd_tool_test(0);
12*1099498eSVignesh Balasubramanian     return n;
13*1099498eSVignesh Balasubramanian   } else {
14*1099498eSVignesh Balasubramanian #pragma omp task shared(i)
15*1099498eSVignesh Balasubramanian     i = fib(n - 1);
16*1099498eSVignesh Balasubramanian #pragma omp task shared(j)
17*1099498eSVignesh Balasubramanian     j = fib(n - 2);
18*1099498eSVignesh Balasubramanian #pragma omp taskwait
19*1099498eSVignesh Balasubramanian     return i + j;
20*1099498eSVignesh Balasubramanian   }
21*1099498eSVignesh Balasubramanian }
22*1099498eSVignesh Balasubramanian 
main(int argc,char ** argv)23*1099498eSVignesh Balasubramanian int main(int argc, char **argv) {
24*1099498eSVignesh Balasubramanian   int n = 5;
25*1099498eSVignesh Balasubramanian   if (argc > 1)
26*1099498eSVignesh Balasubramanian     n = atoi(argv[1]);
27*1099498eSVignesh Balasubramanian #pragma omp parallel
28*1099498eSVignesh Balasubramanian   {
29*1099498eSVignesh Balasubramanian #pragma omp single
30*1099498eSVignesh Balasubramanian     printf("fib(%i) = %i\n", n, fib(n));
31*1099498eSVignesh Balasubramanian   }
32*1099498eSVignesh Balasubramanian   return 0;
33*1099498eSVignesh Balasubramanian }
34*1099498eSVignesh Balasubramanian 
35*1099498eSVignesh Balasubramanian // CHECK-NOT: OMPT-OMPD mismatch
36*1099498eSVignesh Balasubramanian // CHECK-NOT: Python Exception
37*1099498eSVignesh Balasubramanian // CHECK-NOT: The program is not being run.
38