56 lines · cpp
1// RUN: %clang_cc1 -std=gnu++11 -emit-llvm -triple=x86_64-linux-gnu -o - %s | FileCheck %s2 3_Atomic unsigned an_atomic_uint;4 5enum { an_enum_value = 1 };6 7// CHECK-LABEL: define {{.*}}void @_Z5enum1v()8void enum1() {9 an_atomic_uint += an_enum_value;10 // CHECK: atomicrmw add ptr11}12 13// CHECK-LABEL: define {{.*}}void @_Z5enum2v()14void enum2() {15 an_atomic_uint |= an_enum_value;16 // CHECK: atomicrmw or ptr17}18 19// CHECK-LABEL: define {{.*}}void @_Z5enum3RU7_Atomicj({{.*}})20void enum3(_Atomic unsigned &an_atomic_uint_param) {21 an_atomic_uint_param += an_enum_value;22 // CHECK: atomicrmw add ptr23}24 25// CHECK-LABEL: define {{.*}}void @_Z5enum4RU7_Atomicj({{.*}})26void enum4(_Atomic unsigned &an_atomic_uint_param) {27 an_atomic_uint_param |= an_enum_value;28 // CHECK: atomicrmw or ptr29}30 31volatile _Atomic unsigned an_volatile_atomic_uint;32 33// CHECK-LABEL: define {{.*}}void @_Z5enum5v()34void enum5() {35 an_volatile_atomic_uint += an_enum_value;36 // CHECK: atomicrmw add ptr37}38 39// CHECK-LABEL: define {{.*}}void @_Z5enum6v()40void enum6() {41 an_volatile_atomic_uint |= an_enum_value;42 // CHECK: atomicrmw or ptr43}44 45// CHECK-LABEL: define {{.*}}void @_Z5enum7RVU7_Atomicj({{.*}})46void enum7(volatile _Atomic unsigned &an_volatile_atomic_uint_param) {47 an_volatile_atomic_uint_param += an_enum_value;48 // CHECK: atomicrmw add ptr49}50 51// CHECK-LABEL: define {{.*}}void @_Z5enum8RVU7_Atomicj({{.*}})52void enum8(volatile _Atomic unsigned &an_volatile_atomic_uint_param) {53 an_volatile_atomic_uint_param |= an_enum_value;54 // CHECK: atomicrmw or ptr55}56