David Chisnall | 7a7ee30 | 2012-01-16 17:27:18 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s |
2 | |||||
3 | void foo(void) | ||||
4 | { | ||||
5 | _Atomic(int) i = 0; | ||||
6 | // Check that multiply / divides on atomics produce a cmpxchg loop | ||||
7 | i *= 2; // CHECK: cmpxchg | ||||
8 | i /= 2; // CHECK: cmpxchg | ||||
9 | // These should be emitting atomicrmw instructions, but they aren't yet | ||||
10 | i += 2; // CHECK: cmpxchg | ||||
11 | i -= 2; // CHECK: cmpxchg | ||||
12 | i++; // CHECK: cmpxchg | ||||
13 | i--; // CHECK: cmpxchg | ||||
14 | } |