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 }
15