target-28.c 482 B

123456789101112131415161718192021222324252627282930313233343536
  1. extern void abort (void);
  2. int g;
  3. #pragma omp declare target (g)
  4. #pragma omp declare target
  5. int
  6. foo (void)
  7. {
  8. static int s;
  9. return ++s + g;
  10. }
  11. #pragma omp end declare target
  12. int
  13. bar (void)
  14. {
  15. static int s;
  16. #pragma omp declare target to (s)
  17. return ++s;
  18. }
  19. #pragma omp declare target (bar)
  20. int
  21. main ()
  22. {
  23. int r;
  24. #pragma omp target map(from:r)
  25. {
  26. r = (foo () == 1) + (bar () == 1);
  27. r += (foo () == 2) + (bar () == 2);
  28. }
  29. if (r != 4)
  30. abort ();
  31. return 0;
  32. }