Lines Matching refs:CS
87 static void addNonNullAttribute(CallSite CS, Value *Op) { in addNonNullAttribute() argument
89 for (auto &I : CS.args()) { in addNonNullAttribute()
91 CS.addParamAttr(ArgNo, Attribute::NonNull); in addNonNullAttribute()
96 static void setConstantInArgument(CallSite CS, Value *Op, in setConstantInArgument() argument
99 for (auto &I : CS.args()) { in setConstantInArgument()
103 CS.removeParamAttr(ArgNo, Attribute::NonNull); in setConstantInArgument()
104 CS.setArgument(ArgNo, ConstValue); in setConstantInArgument()
110 static bool isCondRelevantToAnyCallArgument(ICmpInst *Cmp, CallSite CS) { in isCondRelevantToAnyCallArgument() argument
114 for (CallSite::arg_iterator I = CS.arg_begin(), E = CS.arg_end(); I != E; in isCondRelevantToAnyCallArgument()
117 if (isa<Constant>(*I) || CS.paramHasAttr(ArgNo, Attribute::NonNull)) in isCondRelevantToAnyCallArgument()
131 static void recordCondition(CallSite CS, BasicBlock *From, BasicBlock *To, in recordCondition() argument
144 if (isCondRelevantToAnyCallArgument(Cmp, CS)) in recordCondition()
154 static void recordConditions(CallSite CS, BasicBlock *Pred, in recordConditions() argument
161 recordCondition(CS, From, To, Conditions); in recordConditions()
167 static void addConditions(CallSite CS, const ConditionsTy &Conditions) { in addConditions() argument
172 setConstantInArgument(CS, Arg, ConstVal); in addConditions()
175 addNonNullAttribute(CS, Arg); in addConditions()
186 static bool canSplitCallSite(CallSite CS, TargetTransformInfo &TTI) { in canSplitCallSite() argument
189 Instruction *Instr = CS.getInstruction(); in canSplitCallSite()
303 CallSite CS, in splitCallSite() argument
306 Instruction *Instr = CS.getInstruction(); in splitCallSite()
308 bool IsMustTailCall = CS.isMustTailCall(); in splitCallSite()
341 for (auto &CI : CS.args()) { in splitCallSite()
417 static bool isPredicatedOnPHI(CallSite CS) { in isPredicatedOnPHI() argument
418 Instruction *Instr = CS.getInstruction(); in isPredicatedOnPHI()
425 for (auto &I : CS.args()) in isPredicatedOnPHI()
447 static PredsWithCondsTy shouldSplitOnPHIPredicatedArgument(CallSite CS) { in shouldSplitOnPHIPredicatedArgument() argument
448 if (!isPredicatedOnPHI(CS)) in shouldSplitOnPHIPredicatedArgument()
451 auto Preds = getTwoPredecessors(CS.getInstruction()->getParent()); in shouldSplitOnPHIPredicatedArgument()
458 static PredsWithCondsTy shouldSplitOnPredicatedArgument(CallSite CS, in shouldSplitOnPredicatedArgument() argument
460 auto Preds = getTwoPredecessors(CS.getInstruction()->getParent()); in shouldSplitOnPredicatedArgument()
469 auto *CSDTNode = DTU.getDomTree().getNode(CS.getInstruction()->getParent()); in shouldSplitOnPredicatedArgument()
476 recordCondition(CS, Pred, CS.getInstruction()->getParent(), Conditions); in shouldSplitOnPredicatedArgument()
478 recordConditions(CS, Pred, Conditions, StopAt); in shouldSplitOnPredicatedArgument()
490 static bool tryToSplitCallSite(CallSite CS, TargetTransformInfo &TTI, in tryToSplitCallSite() argument
493 if (!CS.arg_size() || !canSplitCallSite(CS, TTI)) in tryToSplitCallSite()
496 auto PredsWithConds = shouldSplitOnPredicatedArgument(CS, DTU); in tryToSplitCallSite()
498 PredsWithConds = shouldSplitOnPHIPredicatedArgument(CS); in tryToSplitCallSite()
502 splitCallSite(CS, PredsWithConds, DTU); in tryToSplitCallSite()
521 CallSite CS(cast<Value>(I)); in doCallSiteSplitting() local
522 if (!CS || isa<IntrinsicInst>(I) || isInstructionTriviallyDead(I, &TLI)) in doCallSiteSplitting()
525 Function *Callee = CS.getCalledFunction(); in doCallSiteSplitting()
531 bool IsMustTail = CS.isMustTailCall(); in doCallSiteSplitting()
533 Changed |= tryToSplitCallSite(CS, TTI, DTU); in doCallSiteSplitting()