]> Git Repo - binutils.git/blob - gdb/testsuite/gdb.threads/omp-task.c
Automatic date update in version.in
[binutils.git] / gdb / testsuite / gdb.threads / omp-task.c
1 /* This testcase is part of GDB, the GNU debugger.
2
3    Copyright 2022 Free Software Foundation, Inc.
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program.  If not, see <http://www.gnu.org/licenses/>.
17
18    Tests which verify (or not) that GDB can access shared and private
19    clauses of OpenMP task construct.
20 */
21
22 #include <stdio.h>
23 #include <omp.h>
24
25 int foo(int n) {
26   int share1 = 9, share2 = 11, share3 = 13, priv1, priv2, fpriv;
27   fpriv = n + 4;
28
29   if (n < 2)
30     return n;
31   else {
32 #pragma omp task shared(share1, share2) private(priv1, priv2) firstprivate(fpriv) shared(share3)
33     {
34       priv1 = n;
35       priv2 = n + 2;
36       share2 += share3;
37       printf("share1 = %d, share2 = %d, share3 = %d\n", share1, share2, share3);
38       share1 = priv1 + priv2 + fpriv + foo(n - 1) + share2 + share3;
39     }
40 #pragma omp taskwait
41     return share1 + share2 + share3;
42   }
43 }
44
45 int main() {
46   int n = 10;
47   printf("foo(%d) = %d\n", n, foo(n));
48   return 0;
49 }
This page took 0.025805 seconds and 4 git commands to generate.