Lines Matching refs:F
66 static void findUses(Value *V, Function &F, in findUses() argument
70 findUses(BC, F, Uses); in findUses()
72 findUses(A, F, Uses); in findUses()
78 if (CB->getFunctionType() == F.getValueType()) in findUses()
81 Uses.push_back(std::make_pair(CB, &F)); in findUses()
109 static Function *createWrapper(Function *F, FunctionType *Ty) { in createWrapper() argument
110 Module *M = F->getParent(); in createWrapper()
113 F->getName() + "_bitcast", M); in createWrapper()
114 Wrapper->setAttributes(F->getAttributes()); in createWrapper()
122 FunctionType::param_iterator PI = F->getFunctionType()->param_begin(); in createWrapper()
123 FunctionType::param_iterator PE = F->getFunctionType()->param_end(); in createWrapper()
127 Type *ExpectedRtnType = F->getFunctionType()->getReturnType(); in createWrapper()
130 if ((F->getFunctionType()->getNumParams() != Ty->getNumParams()) || in createWrapper()
131 (F->getFunctionType()->isVarArg() != Ty->isVarArg()) || in createWrapper()
149 << F->getName() << "\n"); in createWrapper()
153 << F->getName() << "\n"); in createWrapper()
165 if (F->isVarArg()) in createWrapper()
169 CallInst *Call = CallInst::Create(F, Args, "", BB); in createWrapper()
171 Type *ExpectedRtnType = F->getFunctionType()->getReturnType(); in createWrapper()
189 << F->getName() << "\n"); in createWrapper()
193 << F->getName() << "\n"); in createWrapper()
204 F->getName() + "_bitcast_invalid", M); in createWrapper()
205 Wrapper->setAttributes(F->getAttributes()); in createWrapper()
208 Wrapper->setName(F->getName() + "_bitcast_invalid"); in createWrapper()
210 LLVM_DEBUG(dbgs() << "createWrapper: no wrapper needed: " << F->getName() in createWrapper()
215 LLVM_DEBUG(dbgs() << "createWrapper: " << F->getName() << "\n"); in createWrapper()
238 for (Function &F : M) { in runOnModule()
241 if (F.getCallingConv() == CallingConv::Swift) in runOnModule()
243 findUses(&F, F, Uses); in runOnModule()
249 if (F.getName() == "main") { in runOnModule()
250 Main = &F; in runOnModule()
255 if (shouldFixMainFunction(F.getFunctionType(), MainTy)) { in runOnModule()
257 << *F.getFunctionType() << "\n"); in runOnModule()
261 Uses.push_back(std::make_pair(CallMain, &F)); in runOnModule()
270 Function *F = UseFunc.second; in runOnModule() local
273 auto Pair = Wrappers.try_emplace(std::make_pair(F, Ty)); in runOnModule()
275 Pair.first->second = createWrapper(F, Ty); in runOnModule()