This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
I can not understand what Daniel wrote (may be I am too stupid). I sent to Revital an algorithm to evaluate register pressure which I used for some project (e.g. live range splitting). As I wrote in my article of gcc summit there are two definitions of register pressure at a given point:Next, live ranges for each pseudo should be computed in a top-down traversal of the CFG. IE you just want to compute the first bb/insn you see it in, and the last bb/insn you see it in.in
You also compute a bitvector per block saying what live ranges are live
it (this is the most expensive part of the algorithm).
Then, you compute block register pressure as follows
:
for each block (bb):
lvrsinbb = bitvector of lvrs in bb computed earlier.
(you can skip the handling of disjoint live ranges for a less accurate estimate)
This method looks similar to the one used in the patch.
Vlad, what do you think?
Because the original purpose of this patch was to implement the variable expansion optimization, I can suggest to restrict the expansions to one or two in a loop and the user could re-define the number of expansions if he preferred to apply it more.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |