Index: lib/Transforms/NaCl/ExpandTls.cpp |
diff --git a/lib/Transforms/NaCl/ExpandTls.cpp b/lib/Transforms/NaCl/ExpandTls.cpp |
index 53e1c92a969ca0aa1681a37327eabbfbfc157aec..19837f74487641ebda0e8f496ab9e190c8e77929 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(); |