summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaChecking.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2013-05-28 17:37:39 +0000
committerFariborz Jahanian <fjahanian@apple.com>2013-05-28 17:37:39 +0000
commit615de765abde7e3ad1f10743b6826a72c81fe313 (patch)
tree1820957b4f9eea10ab5f2e9818367175d3118392 /clang/lib/Sema/SemaChecking.cpp
parentbac964e14f890bf351fa99a3e771b52935bd955f (diff)
downloadbcm5719-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.cpp14
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);
}
OpenPOWER on IntegriCloud