atomic-18.c 728 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. /* PR c/64824 */
  2. /* { dg-do run } */
  3. void
  4. f1 (void)
  5. {
  6. short a;
  7. short b = 1;
  8. int c = 3;
  9. #pragma omp atomic capture
  10. a = b = c << b;
  11. if (b != 6 || a != 6)
  12. __builtin_abort ();
  13. }
  14. void
  15. f2 (void)
  16. {
  17. short a;
  18. short b = 1;
  19. int c = 3;
  20. #pragma omp atomic capture
  21. a = b = c + b;
  22. if (b != 4 || a != 4)
  23. __builtin_abort ();
  24. }
  25. void
  26. f3 (void)
  27. {
  28. short a;
  29. short b = 1;
  30. long long int c = 3;
  31. #pragma omp atomic capture
  32. a = b = c + b;
  33. if (b != 4 || a != 4)
  34. __builtin_abort ();
  35. }
  36. void
  37. f4 (void)
  38. {
  39. char a;
  40. char b = 1;
  41. long long int c = 3LL;
  42. #pragma omp atomic capture
  43. a = b = c << b;
  44. if (b != 6 || a != 6)
  45. __builtin_abort ();
  46. }
  47. int
  48. main ()
  49. {
  50. f1 ();
  51. f2 ();
  52. f3 ();
  53. f4 ();
  54. return 0;
  55. }