atomic-expr.c 779 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // RUN: %clang_cc1 %s -verify -fsyntax-only
  2. // expected-no-diagnostics
  3. _Atomic(unsigned int) data1;
  4. int _Atomic data2;
  5. // Shift operations
  6. int func_01 (int x) {
  7. return data1 << x;
  8. }
  9. int func_02 (int x) {
  10. return x << data1;
  11. }
  12. int func_03 (int x) {
  13. return data2 << x;
  14. }
  15. int func_04 (int x) {
  16. return x << data2;
  17. }
  18. int func_05 () {
  19. return data2 << data1;
  20. }
  21. int func_06 () {
  22. return data1 << data2;
  23. }
  24. void func_07 (int x) {
  25. data1 <<= x;
  26. }
  27. void func_08 (int x) {
  28. data2 <<= x;
  29. }
  30. void func_09 (int* xp) {
  31. *xp <<= data1;
  32. }
  33. void func_10 (int* xp) {
  34. *xp <<= data2;
  35. }
  36. int func_11 (int x) {
  37. return data1 == x;
  38. }
  39. int func_12 () {
  40. return data1 < data2;
  41. }
  42. int func_13 (int x, unsigned y) {
  43. return x ? data1 : y;
  44. }
  45. int func_14 () {
  46. return data1 == 0;
  47. }