Lines Matching defs:ThunkFn
41 llvm::Function *ThunkFn, bool ForVTable,
43 CGM.setFunctionLinkage(GD, ThunkFn);
44 CGM.getCXXABI().setThunkLinkage(ThunkFn, ForVTable, GD,
48 CGM.setGVProperties(ThunkFn, GD);
51 ThunkFn->setDLLStorageClass(llvm::GlobalValue::DefaultStorageClass);
52 ThunkFn->setDSOLocal(true);
55 if (CGM.supportsCOMDAT() && ThunkFn->isWeakForLinker())
56 ThunkFn->setComdat(CGM.getModule().getOrInsertComdat(ThunkFn->getName()));
547 llvm::Function *ThunkFn = cast<llvm::Function>(Thunk->stripPointerCasts());
548 if (ThunkFn->getFunctionType() != ThunkFnTy) {
549 llvm::GlobalValue *OldThunkFn = ThunkFn;
555 ThunkFn = llvm::Function::Create(ThunkFnTy, llvm::Function::ExternalLinkage,
557 CGM.SetLLVMFunctionAttributes(MD, FnInfo, ThunkFn, /*IsThunk=*/false);
560 OldThunkFn->replaceAllUsesWith(ThunkFn);
570 if (!ThunkFn->isDeclaration()) {
573 return ThunkFn;
576 setThunkProperties(CGM, TI, ThunkFn, ForVTable, GD);
577 return ThunkFn;
585 ThunkFn->addFnAttr("thunk");
587 CGM.SetLLVMFunctionAttributesForDefinition(GD.getDecl(), ThunkFn);
595 if (!IsUnprototyped && ThunkFn->isVarArg()) {
612 return ThunkFn;
613 ThunkFn =
614 CodeGenFunction(CGM).GenerateVarArgsThunk(ThunkFn, FnInfo, GD, TI);
617 CodeGenFunction(CGM).generateThunk(ThunkFn, FnInfo, GD, TI, IsUnprototyped);
620 setThunkProperties(CGM, TI, ThunkFn, ForVTable, GD);
621 return ThunkFn;