device-1.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /* { dg-do run } */
  2. /* { dg-require-effective-target offload_device_nonshared_as } */
  3. #include <omp.h>
  4. #include <stdlib.h>
  5. int main ()
  6. {
  7. int a = 100;
  8. int b = 0;
  9. int c, d;
  10. #pragma omp target if(a > 200 && a < 400) map(from: c)
  11. c = omp_is_initial_device ();
  12. #pragma omp target data map(to: b) if(a > 200 && a < 400)
  13. #pragma omp target map(from: b, d)
  14. {
  15. b = 100;
  16. d = omp_is_initial_device ();
  17. }
  18. if (b != 100 || !c || d)
  19. abort ();
  20. a += 200;
  21. b = 0;
  22. #pragma omp target if(a > 200 && a < 400) map(from: c)
  23. c = omp_is_initial_device ();
  24. #pragma omp target data map(to: b) if(a > 200 && a < 400)
  25. #pragma omp target map(from: b, d)
  26. {
  27. b = 100;
  28. d = omp_is_initial_device ();
  29. }
  30. if (b != 0 || c || d)
  31. abort ();
  32. a += 200;
  33. b = 0;
  34. #pragma omp target if(a > 200 && a < 400) map(from: c)
  35. c = omp_is_initial_device ();
  36. #pragma omp target data map(to: b) if(a > 200 && a < 400)
  37. #pragma omp target map(from: b, d)
  38. {
  39. b = 100;
  40. d = omp_is_initial_device ();
  41. }
  42. if (b != 100 || !c || d)
  43. abort ();
  44. return 0;
  45. }