pr42942.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /* PR libgomp/42942 */
  2. /* { dg-do run } */
  3. /* { dg-additional-options "-Wno-deprecated-declarations" } */
  4. #include <omp.h>
  5. #include <stdlib.h>
  6. int
  7. main (void)
  8. {
  9. int e = 0;
  10. omp_set_dynamic (0);
  11. omp_set_nested (1);
  12. omp_set_max_active_levels (1);
  13. if (omp_get_max_active_levels () != 1)
  14. abort ();
  15. #pragma omp parallel num_threads(2) reduction(|:e)
  16. if (!omp_in_parallel ()
  17. || omp_get_num_threads () != 2)
  18. e = 1;
  19. else
  20. #pragma omp parallel num_threads(2) reduction(|:e)
  21. if (!omp_in_parallel ()
  22. || omp_get_num_threads () != 1)
  23. e = 1;
  24. if (e)
  25. abort ();
  26. omp_set_max_active_levels (0);
  27. if (omp_get_max_active_levels () != 0)
  28. abort ();
  29. #pragma omp parallel num_threads(2) reduction(|:e)
  30. if (omp_in_parallel ()
  31. || omp_get_num_threads () != 1)
  32. e = 1;
  33. else
  34. #pragma omp parallel num_threads(2) reduction(|:e)
  35. if (omp_in_parallel ()
  36. || omp_get_num_threads () != 1)
  37. e = 1;
  38. if (e)
  39. abort ();
  40. omp_set_max_active_levels (2);
  41. if (omp_get_max_active_levels () != 2)
  42. abort ();
  43. #pragma omp parallel num_threads(2) reduction(|:e)
  44. if (!omp_in_parallel ()
  45. || omp_get_num_threads () != 2)
  46. e = 1;
  47. else
  48. #pragma omp parallel num_threads(2) reduction(|:e)
  49. if (!omp_in_parallel ()
  50. || omp_get_num_threads () != 2)
  51. e = 1;
  52. else
  53. #pragma omp parallel num_threads(2) reduction(|:e)
  54. if (!omp_in_parallel ()
  55. || omp_get_num_threads () != 1)
  56. e = 1;
  57. if (e)
  58. abort ();
  59. return 0;
  60. }