summary refs log tree commit diff
path: root/lisc/live.c
AgeCommit message (Collapse)Author
2015-11-30cosmetics in livenessQuentin Carbonneaux
2015-11-30change debug formatting in livenessQuentin Carbonneaux
2015-11-30update liveness to work with fpQuentin Carbonneaux
2015-11-23Tmp.phi must not be 0 for temporaries in phisQuentin Carbonneaux
2015-11-09provide BZERO macro for bitsetsQuentin Carbonneaux
2015-11-09precise OCall test in livenessQuentin Carbonneaux
2015-10-31make phi-class handling more localQuentin Carbonneaux
The phi classes are no longer in a union-find structure, instead each temporary argument of a phi node gets a pointer to it. The hinting of the phi node is then shared with its the one of its arguments. When liveness proceeds and finds out that two elements with same hinting (a phi node and one of its arguments or two arguments of the same phi node) interfere, one of them has its phi pointer reset, that way, the hinting won't be shared.
2015-10-30fix several bugs on Blk.gen in livenessQuentin Carbonneaux
2015-10-30break phi-classes following interferencesQuentin Carbonneaux
2015-10-30fix typo bug in livenessQuentin Carbonneaux
2015-10-30start integrating RAMem referencesQuentin Carbonneaux
2015-10-05fix debug output of livenessQuentin Carbonneaux
2015-10-05clean the command line interfaceQuentin Carbonneaux
2015-09-28stupid hinting works better without traces!Quentin Carbonneaux
2015-09-27compute reg interferences in filllive()Quentin Carbonneaux
2015-09-26move the liveon() function in live.cQuentin Carbonneaux
2015-09-15heavy modification of call handlingQuentin Carbonneaux
The IR generated by calls was very bulky because two instructions were used for marking the live range of a clobber. This patch attempts to store the information of what registers are use/def/clobber in the call instruction itself, this leads to more compact code (even more when we'll have SSE registers). However, I find that the amount of extra code needed is not really easonable. Fortunately it is not too invasive, thus if the complexity creeps in, it should be easy to revert.
2015-09-15major lifting: get rid of RRegQuentin Carbonneaux
I've been septic since I introduced it, this commit proves that it costs more than it helps. I've also fixed a bad bug in rega() where I alloc'ed the wrong size for internal arrays. Enums now have names so I can use them to cast in gdb to get the name corresponding to a constant.
2015-09-15use a new Ref type for registersQuentin Carbonneaux
This might not be a good idea, the problem was that many spurious registers would be added to the Bits data-structures during compilation (and would always remain 0). However, doing the above modification de-uniformizes the handling of temps and regs, this makes the code longer and not really nicer. Also, additional Bits structures are required to track the registers independently. Overall this might be a bad idea to revert.
2015-09-15silence clang warningQuentin Carbonneaux
2015-09-15start change of representation for registersQuentin Carbonneaux
2015-09-15cosmeticsQuentin Carbonneaux
2015-09-15rework liveness to compute reg pressureQuentin Carbonneaux
2015-09-15cosmeticsQuentin Carbonneaux
2015-09-15fix allocation bugQuentin Carbonneaux
2015-09-15simplify livenessQuentin Carbonneaux
2015-09-15fix phi handling in livenessQuentin Carbonneaux
2015-09-15add rpo test and some liveness codeQuentin Carbonneaux