Lines Matching refs:llvm
18 #include "llvm/ADT/StringExtras.h"
19 #include "llvm/IR/Intrinsics.h"
20 #include "llvm/Support/Path.h"
26 llvm::Constant *DeclPtr) {
66 llvm::Constant *addr) {
88 llvm::Constant *function;
89 llvm::Constant *argument;
100 argument = llvm::ConstantExpr::getBitCast(
108 argument = llvm::Constant::getNullValue(CGF.Int8PtrTy);
117 llvm::Constant *Addr) {
122 // Grab the llvm.invariant.start intrinsic.
123 llvm::Intrinsic::ID InvStartID = llvm::Intrinsic::invariant_start;
124 llvm::Constant *InvariantStart = CGF.CGM.getIntrinsic(InvStartID);
129 llvm::Value *Args[2] = { llvm::ConstantInt::getSigned(CGF.Int64Ty, Width),
130 llvm::ConstantExpr::getBitCast(Addr, CGF.Int8PtrTy)};
135 llvm::Constant *DeclPtr,
158 static llvm::Function *
160 llvm::FunctionType *ty,
166 static llvm::Constant *createAtExitStub(CodeGenModule &CGM, const VarDecl &VD,
167 llvm::Constant *dtor,
168 llvm::Constant *addr) {
170 llvm::FunctionType *ty = llvm::FunctionType::get(CGM.VoidTy, false);
173 llvm::raw_svector_ostream Out(FnName);
176 llvm::Function *fn =
184 llvm::CallInst *call = CGF.Builder.CreateCall(dtor, addr);
187 if (llvm::Function *dtorFn =
188 dyn_cast<llvm::Function>(dtor->stripPointerCasts()))
198 llvm::Constant *dtor,
199 llvm::Constant *addr) {
201 llvm::Constant *dtorStub = createAtExitStub(CGM, VD, dtor, addr);
204 llvm::FunctionType *atexitTy =
205 llvm::FunctionType::get(IntTy, dtorStub->getType(), false);
207 llvm::Constant *atexit =
209 if (llvm::Function *atexitFn = dyn_cast<llvm::Function>(atexit))
216 llvm::GlobalVariable *DeclPtr,
229 static llvm::Function *
231 llvm::FunctionType *FTy,
233 llvm::Function *Fn =
234 llvm::Function::Create(FTy, llvm::GlobalValue::InternalLinkage,
250 Fn->addFnAttr(llvm::Attribute::SanitizeAddress);
252 Fn->addFnAttr(llvm::Attribute::SanitizeThread);
254 Fn->addFnAttr(llvm::Attribute::SanitizeMemory);
262 llvm::GlobalVariable *Addr,
264 llvm::FunctionType *FTy = llvm::FunctionType::get(VoidTy, false);
267 llvm::raw_svector_ostream Out(FnName);
272 llvm::Function *Fn =
298 // As a consequence, we can put them into their own llvm.global_ctors entry.
307 llvm::DenseMap<const Decl *, unsigned>::iterator I =
320 llvm::Function *InitFn = nullptr;
323 llvm::FunctionType *FTy = llvm::FunctionType::get(VoidTy, false);
326 llvm::GlobalVariable *Guard = new llvm::GlobalVariable(
327 getModule(), Int8Ty, false, llvm::GlobalVariable::InternalLinkage,
328 llvm::ConstantInt::get(Int8Ty, 0), "__tls_guard");
348 llvm::FunctionType *FTy = llvm::FunctionType::get(VoidTy, false);
353 SmallVector<llvm::Constant*, 8> LocalCXXGlobalInits;
354 llvm::array_pod_sort(PrioritizedCXXGlobalInits.begin(),
369 std::string PrioritySuffix = llvm::utostr(Priority);
372 llvm::Function *Fn =
388 SmallString<128> FileName(llvm::sys::path::filename(
396 llvm::Function *Fn = CreateGlobalInitOrDestructFunction(
397 *this, FTy, llvm::Twine("_GLOBAL__sub_I_", FileName));
410 llvm::FunctionType *FTy = llvm::FunctionType::get(VoidTy, false);
413 llvm::Function *Fn =
421 void CodeGenFunction::GenerateCXXGlobalVarDeclInitFunc(llvm::Function *Fn,
423 llvm::GlobalVariable *Addr,
447 CodeGenFunction::GenerateCXXGlobalInitFunc(llvm::Function *Fn,
448 ArrayRef<llvm::Constant *> Decls,
449 llvm::GlobalVariable *Guard) {
457 llvm::BasicBlock *ExitBlock = nullptr;
461 llvm::Value *GuardVal = Builder.CreateLoad(Guard);
462 llvm::Value *Uninit = Builder.CreateIsNull(GuardVal,
467 Builder.CreateStore(llvm::ConstantInt::get(GuardVal->getType(),1), Guard);
468 llvm::BasicBlock *InitBlock = createBasicBlock("init");
479 llvm::Value *token = EmitObjCAutoreleasePoolPush();
498 void CodeGenFunction::GenerateCXXGlobalDtorsFunc(llvm::Function *Fn,
499 const std::vector<std::pair<llvm::WeakVH, llvm::Constant*> >
510 llvm::Value *Callee = DtorsAndObjects[e - i - 1].first;
511 llvm::CallInst *CI = Builder.CreateCall(Callee,
514 if (llvm::Function *F = dyn_cast<llvm::Function>(Callee))
524 llvm::Function *CodeGenFunction::generateDestroyHelper(
525 llvm::Constant *addr, QualType type, Destroyer *destroyer,
534 llvm::FunctionType *FTy = CGM.getTypes().GetFunctionType(FI);
535 llvm::Function *fn =