target-has-device-addr-3.c 614 B

123456789101112131415161718192021222324252627282930313233
  1. /* Testing 'has_device_addr' clause with variable sized array. */
  2. int
  3. foo (int size)
  4. {
  5. int x[size];
  6. #pragma omp target data map(x[:size]) use_device_addr(x)
  7. #pragma omp target has_device_addr(x)
  8. for (int i = 0; i < size; i++)
  9. x[i] = i;
  10. for (int i = 0; i < size; i++)
  11. if (x[i] != i)
  12. __builtin_abort ();
  13. #pragma omp target data map(x) use_device_addr(x)
  14. #pragma omp target has_device_addr(x[2:3])
  15. for (int i = 0; i < size; i++)
  16. x[i] = i;
  17. for (int i = 0; i < size; i++)
  18. if (x[i] != i)
  19. __builtin_abort ();
  20. return 0;
  21. }
  22. int
  23. main ()
  24. {
  25. foo (40);
  26. return 0;
  27. }