1236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor// RUN: %clang_cc1 %s -verify -fsyntax-only
2236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor// expected-no-diagnostics
3236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
4236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor_Atomic(unsigned int) data1;
5236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorint _Atomic data2;
6236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
7236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor// Shift operations
8236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
9236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorint func_01 (int x) {
10236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor  return data1 << x;
11236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor}
12236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
13236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorint func_02 (int x) {
14236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor  return x << data1;
15236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor}
16236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
17236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorint func_03 (int x) {
18236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor  return data2 << x;
19236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor}
20236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
21236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorint func_04 (int x) {
22236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor  return x << data2;
23236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor}
24236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
25236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorint func_05 () {
26236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor  return data2 << data1;
27236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor}
28236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
29236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorint func_06 () {
30236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor  return data1 << data2;
31236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor}
32236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
33236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorvoid func_07 (int x) {
34236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor  data1 <<= x;
35236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor}
36236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
37236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorvoid func_08 (int x) {
38236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor  data2 <<= x;
39236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor}
40236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
41236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorvoid func_09 (int* xp) {
42236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor  *xp <<= data1;
43236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor}
44236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor
45236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregorvoid func_10 (int* xp) {
46236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor  *xp <<= data2;
47236d9d16c9b42001085611a82d37b9d5a4f39c1fDouglas Gregor}
4809bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedman
4909bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedmanint func_11 (int x) {
5009bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedman  return data1 == x;
5109bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedman}
5209bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedman
5309bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedmanint func_12 () {
5409bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedman  return data1 < data2;
5509bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedman}
5609bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedman
5709bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedmanint func_13 (int x, unsigned y) {
5809bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedman  return x ? data1 : y;
5909bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedman}
6009bddcf8c0ce4cc2f2a18e050e971539e8a396f8Eli Friedman
61