aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/llvm/IR/Intrinsics.td3
-rw-r--r--lib/Transforms/NaCl/ExpandTls.cpp13
2 files changed, 3 insertions, 13 deletions
diff --git a/include/llvm/IR/Intrinsics.td b/include/llvm/IR/Intrinsics.td
index f9f662929b..b8f3997e9c 100644
--- a/include/llvm/IR/Intrinsics.td
+++ b/include/llvm/IR/Intrinsics.td
@@ -479,8 +479,7 @@ def int_nacl_longjmp : Intrinsic<[], [llvm_ptr_ty, llvm_i32_ty],
[IntrNoReturn]>;
// Fast built-in version of NaCl's tls_get() IRT interface.
-def int_nacl_read_tp : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>,
- GCCBuiltin<"__builtin_nacl_read_tp">;
+def int_nacl_read_tp : Intrinsic<[llvm_ptr_ty], [], [IntrNoMem]>;
// The following intrinsics provide target-specific implementations of
// the interface in native_client/src/untrusted/nacl/tls_params.h.
diff --git a/lib/Transforms/NaCl/ExpandTls.cpp b/lib/Transforms/NaCl/ExpandTls.cpp
index 53e1c92a96..19837f7448 100644
--- a/lib/Transforms/NaCl/ExpandTls.cpp
+++ b/lib/Transforms/NaCl/ExpandTls.cpp
@@ -29,6 +29,7 @@
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/Instructions.h"
+#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Transforms/NaCl.h"
@@ -233,17 +234,7 @@ static PointerType *buildTlsTemplate(Module &M, std::vector<VarInfo> *TlsVars) {
static void rewriteTlsVars(Module &M, std::vector<VarInfo> *TlsVars,
PointerType *TemplatePtrType) {
// Set up the intrinsic that reads the thread pointer.
- Type *i8 = Type::getInt8Ty(M.getContext());
- FunctionType *ReadTpType = FunctionType::get(PointerType::get(i8, 0),
- /*isVarArg=*/false);
- AttrBuilder B;
- B.addAttribute(Attribute::ReadOnly);
- B.addAttribute(Attribute::NoUnwind);
- AttributeSet ReadTpAttrs = AttributeSet::get(
- M.getContext(), AttributeSet::FunctionIndex, B);
- Constant *ReadTpFunc = M.getOrInsertTargetIntrinsic("llvm.nacl.read.tp",
- ReadTpType,
- ReadTpAttrs);
+ Function *ReadTpFunc = Intrinsic::getDeclaration(&M, Intrinsic::nacl_read_tp);
for (std::vector<VarInfo>::iterator VarInfo = TlsVars->begin();
VarInfo != TlsVars->end();