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