Home | History | Annotate | Download | only in src

Lines Matching refs:Func

38 bool overlapsDefs(const Cfg *Func, const Variable *Item, const Variable *Var) {
40 VariablesMetadata *VMetadata = Func->getVMetadata();
51 void dumpDisableOverlap(const Cfg *Func, const Variable *Var,
55 if (!Func->isVerbose(IceV_LinearScan))
58 VariablesMetadata *VMetadata = Func->getVMetadata();
59 Ostream &Str = Func->getContext()->getStrDump();
71 void dumpLiveRange(const Variable *Var, const Cfg *Func) {
74 Ostream &Str = Func->getContext()->getStrDump();
82 Var->dump(Func);
100 LinearScan::LinearScan(Cfg *Func)
101 : Func(Func), Ctx(Func->getContext()), Target(Func->getTarget()),
102 Verbose(BuildDefs::dump() && Func->isVerbose(IceV_LinearScan)),
108 TimerMarker T(TimerStack::TT_initUnhandled, Func);
147 for (CfgNode *Node : Func->getNodes()) {
209 TimerMarker T(TimerStack::TT_initUnhandled, Func);
219 for (CfgNode *Node : Func->getNodes()) {
302 TimerMarker T(TimerStack::TT_initUnhandled, Func);
305 const VarList &Vars = Func->getVariables();
333 Vars.reserve(Func->getVariables().size() - ExcludeVars.size());
334 for (auto *Var : Func->getVariables()) {
404 CfgNode *Node = Func->getVMetadata()->getLocalUseNode(Iter.Cur);
439 Variable *SpillLoc = Func->makeVariable(Iter.Cur->getType());
441 Target->lowerInst(Node, SpillPoint, InstFakeDef::create(Func, Preg));
442 Target->lowerInst(Node, SpillPoint, InstAssign::create(Func, SpillLoc, Preg));
444 Func, Preg, SpillLoc));
445 Target->lowerInst(Node, FillPoint, InstFakeUse::create(Func, Preg));
518 VariablesMetadata *VMetadata = Func->getVMetadata();
542 Iter.AllowOverlap = !overlapsDefs(Func, Iter.Cur, SrcVar);
559 Iter.Prefer->dump(Func);
581 RegAlias == Iter.PreferReg && overlapsDefs(Func, Iter.Cur, Item)) {
583 dumpDisableOverlap(Func, Item, "Inactive");
614 dumpDisableOverlap(Func, Item, "PrecoloredUnhandled");
672 RegWeight W = Item->getWeight(Func);
683 RegWeight W = Item->getWeight(Func);
693 Iter.Cur->getWeight(Func) <= Iter.Weights[MinWeightIndex]) {
722 if (Iter.Cur->getWeight(Func) <= Iter.Weights[MinWeightIndex]) {
724 Func->setError("Unable to find a physical register for an "
794 (Func->getSequenceNumber() << 1) ^ (Kind == RAK_Phi ? 0u : 1u);
812 Item->dump(Func);
819 Item->dump(Func);
837 TimerMarker T(TimerStack::TT_linearScan, Func);
841 Func->resetCurrentNode();
918 overlapsDefs(Func, Iter.Cur, Item)) {
920 dumpDisableOverlap(Func, Item, "Active");
970 dump(Func);
978 dump(Func);
995 dumpLiveRange(Item, Func);
1000 void LinearScan::dump(Cfg *Func) const {
1005 Ostream &Str = Func->getContext()->getStrDump();
1006 Func->resetCurrentNode();
1010 dumpLiveRange(Item, Func);
1015 dumpLiveRange(Item, Func);
1020 dumpLiveRange(Item, Func);
1025 dumpLiveRange(Item, Func);