aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp3
-rw-r--r--test/NaCl/Bitcode/intrinsic-pointer-args.ll4
2 files changed, 7 insertions, 0 deletions
diff --git a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp
index f5fd1ba0e7..c826ab3353 100644
--- a/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp
+++ b/lib/Bitcode/NaCl/Reader/NaClBitcodeReader.cpp
@@ -809,6 +809,9 @@ FunctionType *NaClBitcodeReader::AddPointerTypesToIntrinsicType(
} else if (Name.startswith("llvm.nacl.atomic.rmw.")) {
assert(ArgTypes.size() >= 3);
ArgTypes[1] = ArgTypes[2]->getPointerTo();
+ } else if (Name == "llvm.nacl.atomic.is.lock.free") {
+ assert(ArgTypes.size() >= 2);
+ ArgTypes[1] = Type::getInt8PtrTy(Context);
}
return FunctionType::get(ReturnTy, ArgTypes, false);
}
diff --git a/test/NaCl/Bitcode/intrinsic-pointer-args.ll b/test/NaCl/Bitcode/intrinsic-pointer-args.ll
index 0848568fd3..7e5467c9a1 100644
--- a/test/NaCl/Bitcode/intrinsic-pointer-args.ll
+++ b/test/NaCl/Bitcode/intrinsic-pointer-args.ll
@@ -30,6 +30,8 @@ declare void @llvm.nacl.atomic.store.i64(i64, i64*, i32)
declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32)
declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32)
+declare i1 @llvm.nacl.atomic.is.lock.free(i32, i8*)
+
; TD: declare i8* @llvm.stacksave()
; TD: declare void @llvm.stackrestore(i8*)
@@ -53,3 +55,5 @@ declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32)
; TD: declare i32 @llvm.nacl.atomic.rmw.i32(i32, i32*, i32, i32)
; TD: declare i64 @llvm.nacl.atomic.rmw.i64(i32, i64*, i64, i32)
+
+; TD: declare i1 @llvm.nacl.atomic.is.lock.free(i32, i8*)