diff options
author | David Majnemer <david.majnemer@gmail.com> | 2015-06-03 00:26:35 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2015-06-03 00:26:35 +0000 |
commit | c6eb650120b879e6fa64a6507b2a03365304d9f1 (patch) | |
tree | b28ba018e53df6dd9ec0a74a847ac9a90eb00b61 /clang/test/CodeGen/atomic-ops.c | |
parent | 8e42190d2038d129f9ebec8e83a5380cf0fcff30 (diff) | |
download | bcm5719-llvm-c6eb650120b879e6fa64a6507b2a03365304d9f1.tar.gz bcm5719-llvm-c6eb650120b879e6fa64a6507b2a03365304d9f1.zip |
[Sema] Make the atomic builtins more efficient by reducing volatility
The parameter types and return type do not need to be volatile just
because the pointer type's pointee type is volatile qualified. This is
an unnecessary pessimization.
llvm-svn: 238892
Diffstat (limited to 'clang/test/CodeGen/atomic-ops.c')
-rw-r--r-- | clang/test/CodeGen/atomic-ops.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/test/CodeGen/atomic-ops.c b/clang/test/CodeGen/atomic-ops.c index 733c60eb859..13ab5f117f9 100644 --- a/clang/test/CodeGen/atomic-ops.c +++ b/clang/test/CodeGen/atomic-ops.c @@ -105,6 +105,14 @@ int fi3e(atomic_int *i) { return atomic_fetch_or(i, 1); } +int fi3f(int *i) { + // CHECK-LABEL: @fi3f + // CHECK-NOT: store volatile + // CHECK: atomicrmw or + // CHECK-NOT: {{ or }} + return __atomic_fetch_or(i, (short)1, memory_order_seq_cst); +} + _Bool fi4(_Atomic(int) *i) { // CHECK-LABEL: @fi4( // CHECK: [[PAIR:%[.0-9A-Z_a-z]+]] = cmpxchg i32* [[PTR:%[.0-9A-Z_a-z]+]], i32 [[EXPECTED:%[.0-9A-Z_a-z]+]], i32 [[DESIRED:%[.0-9A-Z_a-z]+]] |