lib-1.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /* { dg-additional-options "-Wno-deprecated-declarations" } */
  2. #include <stdlib.h>
  3. #include <omp.h>
  4. int
  5. main (void)
  6. {
  7. double d, e;
  8. int l;
  9. omp_lock_t lck;
  10. omp_nest_lock_t nlck;
  11. d = omp_get_wtime ();
  12. omp_init_lock (&lck);
  13. omp_set_lock (&lck);
  14. if (omp_test_lock (&lck))
  15. abort ();
  16. omp_unset_lock (&lck);
  17. if (! omp_test_lock (&lck))
  18. abort ();
  19. if (omp_test_lock (&lck))
  20. abort ();
  21. omp_unset_lock (&lck);
  22. omp_destroy_lock (&lck);
  23. omp_init_nest_lock (&nlck);
  24. if (omp_test_nest_lock (&nlck) != 1)
  25. abort ();
  26. omp_set_nest_lock (&nlck);
  27. if (omp_test_nest_lock (&nlck) != 3)
  28. abort ();
  29. omp_unset_nest_lock (&nlck);
  30. omp_unset_nest_lock (&nlck);
  31. if (omp_test_nest_lock (&nlck) != 2)
  32. abort ();
  33. omp_unset_nest_lock (&nlck);
  34. omp_unset_nest_lock (&nlck);
  35. omp_destroy_nest_lock (&nlck);
  36. omp_set_dynamic (1);
  37. if (! omp_get_dynamic ())
  38. abort ();
  39. omp_set_dynamic (0);
  40. if (omp_get_dynamic ())
  41. abort ();
  42. omp_set_nested (1);
  43. if (! omp_get_nested ())
  44. abort ();
  45. omp_set_nested (0);
  46. if (omp_get_nested ())
  47. abort ();
  48. omp_set_num_threads (5);
  49. if (omp_get_num_threads () != 1)
  50. abort ();
  51. if (omp_get_max_threads () != 5)
  52. abort ();
  53. if (omp_get_thread_num () != 0)
  54. abort ();
  55. omp_set_num_threads (3);
  56. if (omp_get_num_threads () != 1)
  57. abort ();
  58. if (omp_get_max_threads () != 3)
  59. abort ();
  60. if (omp_get_thread_num () != 0)
  61. abort ();
  62. l = 0;
  63. #pragma omp parallel reduction (|:l)
  64. {
  65. l = omp_get_num_threads () != 3;
  66. l |= omp_get_thread_num () < 0;
  67. l |= omp_get_thread_num () >= 3;
  68. #pragma omp master
  69. l |= omp_get_thread_num () != 0;
  70. }
  71. if (l)
  72. abort ();
  73. if (omp_get_num_procs () <= 0)
  74. abort ();
  75. if (omp_in_parallel ())
  76. abort ();
  77. #pragma omp parallel reduction (|:l)
  78. l = ! omp_in_parallel ();
  79. #pragma omp parallel reduction (|:l) if (1)
  80. l = ! omp_in_parallel ();
  81. if (l)
  82. abort ();
  83. e = omp_get_wtime ();
  84. if (d > e)
  85. abort ();
  86. d = omp_get_wtick ();
  87. /* Negative precision is definitely wrong,
  88. bigger than 1s clock resolution is also strange. */
  89. if (d <= 0 || d > 1)
  90. abort ();
  91. return 0;
  92. }