| // RUN: %clang_cc1 -emit-llvm %s -o - | FileCheck %s | |
| void foo(int x) | |
| { | |
| _Atomic(int) i = 0; | |
| _Atomic(short) j = 0; | |
| // Check that multiply / divides on atomics produce a cmpxchg loop | |
| i *= 2; | |
| // CHECK: mul nsw i32 | |
| // CHECK: cmpxchg i32* | |
| i /= 2; | |
| // CHECK: sdiv i32 | |
| // CHECK: cmpxchg i32* | |
| j /= x; | |
| // CHECK: sdiv i32 | |
| // CHECK: cmpxchg i16* | |
| } |