NFC: unify clang / LLVM atomic ordering
This makes the C11 / C++11 *ABI* atomic ordering accessible from LLVM, as discussed in http://reviews.llvm.org/D18200#inline-151433 This re-applies r266574 which I had reverted in r266575. Depends on http://reviews.llvm.org/D18875 Original review: http://reviews.llvm.org/D18876 llvm-svn: 266641
This commit is contained in:
@@ -1791,10 +1791,10 @@ bool Sema::CheckOtherCall(CallExpr *TheCall, const FunctionProtoType *Proto) {
|
||||
}
|
||||
|
||||
static bool isValidOrderingForOp(int64_t Ordering, AtomicExpr::AtomicOp Op) {
|
||||
if (Ordering < AtomicExpr::AO_ABI_memory_order_relaxed ||
|
||||
Ordering > AtomicExpr::AO_ABI_memory_order_seq_cst)
|
||||
if (!llvm::isValidAtomicOrderingCABI(Ordering))
|
||||
return false;
|
||||
|
||||
auto OrderingCABI = (llvm::AtomicOrderingCABI)Ordering;
|
||||
switch (Op) {
|
||||
case AtomicExpr::AO__c11_atomic_init:
|
||||
llvm_unreachable("There is no ordering argument for an init");
|
||||
@@ -1802,15 +1802,15 @@ static bool isValidOrderingForOp(int64_t Ordering, AtomicExpr::AtomicOp Op) {
|
||||
case AtomicExpr::AO__c11_atomic_load:
|
||||
case AtomicExpr::AO__atomic_load_n:
|
||||
case AtomicExpr::AO__atomic_load:
|
||||
return Ordering != AtomicExpr::AO_ABI_memory_order_release &&
|
||||
Ordering != AtomicExpr::AO_ABI_memory_order_acq_rel;
|
||||
return OrderingCABI != llvm::AtomicOrderingCABI::release &&
|
||||
OrderingCABI != llvm::AtomicOrderingCABI::acq_rel;
|
||||
|
||||
case AtomicExpr::AO__c11_atomic_store:
|
||||
case AtomicExpr::AO__atomic_store:
|
||||
case AtomicExpr::AO__atomic_store_n:
|
||||
return Ordering != AtomicExpr::AO_ABI_memory_order_consume &&
|
||||
Ordering != AtomicExpr::AO_ABI_memory_order_acquire &&
|
||||
Ordering != AtomicExpr::AO_ABI_memory_order_acq_rel;
|
||||
return OrderingCABI != llvm::AtomicOrderingCABI::consume &&
|
||||
OrderingCABI != llvm::AtomicOrderingCABI::acquire &&
|
||||
OrderingCABI != llvm::AtomicOrderingCABI::acq_rel;
|
||||
|
||||
default:
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user