[LLVMdev] help with phi elimination/ register allocation
sabre at nondot.org
Fri Nov 18 08:12:43 PST 2005
On Fri, 18 Nov 2005, Abhijit Ray wrote:
> I would like to have the llvm code modified so as to obtain the amount
> of spill code generated, for each basic block.
> Basically what would be helpful would be something like a code for a
> target which has the same instruction set as LLVM itself. Only extra
> input I would be providing would be the number of registers.
Ok, realize that this is just an approximation though. Consider 64-bit
values on a 32-bit host. These will require twice as many registers to
hold as 32-bit values. Anything that just looks at LLVM code will
underestimate (by half!) the register pressure in these situations.
> The intention is to analyze the type of applications that stress the
> register allocator more.
Why not just takes something like the itanium backend (which has many
registers) and play around with increasing/reducing the number of
registers it has? There is already -stats output telling you the number
of spills. This would give you a useful number for a real target.
> Just wanted to know if LLVM already has passes which I can run to get such info.
> Towards this end ,after some help on the irc channel , I checked out
> the PHIElimination pass , is it possible to run that pass on the
> bytecode file using
The PHI elimination pass is part of the code generator, it is not an
llvm-to-llvm transformation. However, there is the recently committed
reg2mem pass. It does not currently eliminate all PHI nodes, but could be
extended to do so if you desire. However, I'm not sure why eliminating
SSA form is useful. How are you trying to do measurements?
More information about the llvm-dev