summaryrefslogtreecommitdiffstats
path: root/clang/test/Sema/atomic-expr.c
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2013-04-16 15:41:08 +0000
committerDouglas Gregor <dgregor@apple.com>2013-04-16 15:41:08 +0000
commit8997dac30afea00f6b99e438c6fb235a1cfedd6a (patch)
treeb1a02eabf9b27c4d5beba5544e7516ef35caa680 /clang/test/Sema/atomic-expr.c
parentd1b6778e69373405af71645e3ac826e586b54e9d (diff)
downloadbcm5719-llvm-8997dac30afea00f6b99e438c6fb235a1cfedd6a.tar.gz
bcm5719-llvm-8997dac30afea00f6b99e438c6fb235a1cfedd6a.zip
Fix handling of atomic shift operations, from Serge Pavlov.
llvm-svn: 179600
Diffstat (limited to 'clang/test/Sema/atomic-expr.c')
-rw-r--r--clang/test/Sema/atomic-expr.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/clang/test/Sema/atomic-expr.c b/clang/test/Sema/atomic-expr.c
new file mode 100644
index 00000000000..ecc04c4c68d
--- /dev/null
+++ b/clang/test/Sema/atomic-expr.c
@@ -0,0 +1,47 @@
+// RUN: %clang_cc1 %s -verify -fsyntax-only
+// expected-no-diagnostics
+
+_Atomic(unsigned int) data1;
+int _Atomic data2;
+
+// Shift operations
+
+int func_01 (int x) {
+ return data1 << x;
+}
+
+int func_02 (int x) {
+ return x << data1;
+}
+
+int func_03 (int x) {
+ return data2 << x;
+}
+
+int func_04 (int x) {
+ return x << data2;
+}
+
+int func_05 () {
+ return data2 << data1;
+}
+
+int func_06 () {
+ return data1 << data2;
+}
+
+void func_07 (int x) {
+ data1 <<= x;
+}
+
+void func_08 (int x) {
+ data2 <<= x;
+}
+
+void func_09 (int* xp) {
+ *xp <<= data1;
+}
+
+void func_10 (int* xp) {
+ *xp <<= data2;
+}
OpenPOWER on IntegriCloud