Lines Matching refs:F

73     explicit FnProperties(const TargetMachine &TM, const Function &F) {  in FnProperties()  argument
74 Features = TM.getSubtargetImpl(F)->getFeatureBits(); in FnProperties()
77 if (F.hasFnAttribute(AttributeNames[I])) in FnProperties()
78 Attributes[I] = F.getFnAttribute(AttributeNames[I]); in FnProperties()
128 Function *cloneWithProperties(Function &F, const FnProperties &NewProps);
131 void setFeatures(Function &F, const FeatureBitset &NewFeatures);
134 void setAttributes(Function &F, const ArrayRef<Optional<Attribute>> NewAttrs);
146 bool process(Function &F);
168 bool runOnFunction(Function &F) override;
214 for (auto &F : M.functions()) in process() local
215 if (AMDGPU::isEntryFunctionCC(F.getCallingConv())) in process()
216 Roots.insert(&F); in process()
221 bool AMDGPUPropagateAttributes::process(Function &F) { in process() argument
222 Roots.insert(&F); in process()
239 for (auto &F : M.functions()) { in process() local
240 if (F.isDeclaration()) in process()
243 const FnProperties CalleeProps(*TM, F); in process()
247 for (User *U : F.users()) { in process()
256 if (!CI || CI->getCalledOperand() != &F) in process()
267 if (!Roots.count(&F)) in process()
268 NewRoots.insert(&F); in process()
272 Function *NewF = findFunction(CallerProps, &F); in process()
280 setFeatures(F, NewProps.Features); in process()
281 setAttributes(F, NewProps.Attributes); in process()
282 NewRoots.insert(&F); in process()
287 NewF = cloneWithProperties(F, NewProps); in process()
288 Clones.push_back(Clone(CallerProps, &F, NewF)); in process()
293 Replaced.insert(&F); in process()
305 for (Function *F : Replaced) { in process()
306 if (F->use_empty()) in process()
307 F->eraseFromParent(); in process()
317 AMDGPUPropagateAttributes::cloneWithProperties(Function &F, in cloneWithProperties() argument
319 LLVM_DEBUG(dbgs() << "Cloning " << F.getName() << '\n'); in cloneWithProperties()
322 Function *NewF = CloneFunction(&F, dummy); in cloneWithProperties()
330 if (F.hasName() && F.hasLocalLinkage()) { in cloneWithProperties()
332 NewF->takeName(&F); in cloneWithProperties()
333 F.setName(NewName); in cloneWithProperties()
339 void AMDGPUPropagateAttributes::setFeatures(Function &F, in setFeatures() argument
345 << " on " << F.getName() << '\n'); in setFeatures()
347 F.removeFnAttr("target-features"); in setFeatures()
348 F.addFnAttr("target-features", NewFeatureStr); in setFeatures()
351 void AMDGPUPropagateAttributes::setAttributes(Function &F, in setAttributes() argument
353 LLVM_DEBUG(dbgs() << "Set attributes on " << F.getName() << ":\n"); in setAttributes()
355 F.removeFnAttr(AttributeNames[I]); in setAttributes()
358 F.addFnAttr(*NewAttrs[I]); in setAttributes()
377 bool AMDGPUPropagateAttributesEarly::runOnFunction(Function &F) { in runOnFunction() argument
386 if (!AMDGPU::isEntryFunctionCC(F.getCallingConv())) in runOnFunction()
389 return AMDGPUPropagateAttributes(TM, false).process(F); in runOnFunction()
415 AMDGPUPropagateAttributesEarlyPass::run(Function &F, in run() argument
417 if (!AMDGPU::isEntryFunctionCC(F.getCallingConv())) in run()
420 return AMDGPUPropagateAttributes(&TM, false).process(F) in run()