diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2013-05-28 17:37:39 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2013-05-28 17:37:39 +0000 |
commit | 615de765abde7e3ad1f10743b6826a72c81fe313 (patch) | |
tree | 1820957b4f9eea10ab5f2e9818367175d3118392 /clang/lib/Sema/SemaChecking.cpp | |
parent | bac964e14f890bf351fa99a3e771b52935bd955f (diff) | |
download | bcm5719-llvm-615de765abde7e3ad1f10743b6826a72c81fe313.tar.gz bcm5719-llvm-615de765abde7e3ad1f10743b6826a72c81fe313.zip |
Patch to issue error when target of MacOS and iOS
does not support large load/store of atomic objects.
// rdar://13973577
llvm-svn: 182781
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index cdc546c4761..da24667804b 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -908,10 +908,18 @@ ExprResult Sema::SemaAtomicOpsOverloaded(ExprResult TheCallResult, SubExprs.push_back(TheCall->getArg(3)); // Weak break; } + + AtomicExpr *AE = new (Context) AtomicExpr(TheCall->getCallee()->getLocStart(), + SubExprs, ResultType, Op, + TheCall->getRParenLoc()); + + if ((Op == AtomicExpr::AO__c11_atomic_load || + (Op == AtomicExpr::AO__c11_atomic_store)) && + Context.AtomicUsesUnsupportedLibcall(AE)) + Diag(AE->getLocStart(), diag::err_atomic_load_store_uses_lib) << + ((Op == AtomicExpr::AO__c11_atomic_load) ? 0 : 1); - return Owned(new (Context) AtomicExpr(TheCall->getCallee()->getLocStart(), - SubExprs, ResultType, Op, - TheCall->getRParenLoc())); + return Owned(AE); } |