// 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* | |
} |