search for: regusageinfopropag

Displaying 5 results from an estimated 5 matches for "regusageinfopropag".

2018 May 01
0
IPRA and conditionally reserved registers
...1, since it may be reserved in some caller. As Uli pointed out that is very conservative, and it seems to me also not be in agreement with IPRA, where the save/restore is generally done by caller as much as possible. So the question is how this should get handled in caller? I would like to see RegUsageInfoPropagate compare the unmodified regmask with the updated one, and then make sure that any registers reserved in the current function being clobbered by the call as a result of IPRA (updated regmask), should now be copied to and from a virtual register around that call, but this is not being done. Am...
2016 Aug 16
2
A thought to improve IPRA
...> } >> >> Thanks MatzeB for pointing this out. > >> which usually checks that this is fine. Maybe that code looks at the >> regmask of the calling convention rather than the new regmask computed by >> IPRA? >> > > Yes I was doing the optimization at RegUsageInfoPropagate and and above > code is getting executed at ISel phase that is why effect of new CC is not > visible at ISel phase. > So I moved this optimization at CodeGenPrepare which happens before ISel. > Now I am not getting the above bug. But the result of this optimization is > not good (...
2016 Aug 05
2
A thought to improve IPRA
The code in X86TargetLowering::IsEligibleForTailCallOptimization() has this part: // The callee has to preserve all registers the caller needs to preserve. const X86RegisterInfo *TRI = Subtarget.getRegisterInfo(); const uint32_t *CallerPreserved = TRI->getCallPreservedMask(MF, CallerCC); if (!CCMatch) { const uint32_t *CalleePreserved = TRI->getCallPreservedMask(MF, CalleeCC);
2016 Jun 20
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...gt; > int (*fp)() = 0; > int (*fp1)(int) = 0; > > int main() { > fp = foo; > fp(); > fp1 = bar; > fp1(15); > return 0; > } > > I have experimented with indirect call specially which are due to use of function pointers as shown in above example: Following code in RegUsageInfoPropagate.cpp handles this kind of indirect calls : for (MachineBasicBlock &MBB : MF) { for (MachineInstr &MI : MBB) { if (!MI.isCall()) continue; DEBUG(dbgs() << "Call Instruction Before Register Usage Info Propagation : \n"); DEBUG(dbgs(...
2016 Jun 19
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
Dear Community, Please find summary of work done during this week as follow: Implementation: ============ During this week we have identified a bug in IPRA due to not considering RegMask of function calls in given machine function. The same bug on AArch64 has been reported by Chad Rosier and more detailed description can be found at https://llvm.org/bugs/show_bug.cgi?id=28144 . To fix this bug