summary refs log tree commit diff
AgeCommit message (Collapse)Author
2015-09-30finalize the new slot systemQuentin Carbonneaux
There is still the issue that spill is set to -1 to mark the absence of slot, it does not play well with zero-initialization at all.
2015-09-30use more machine registersQuentin Carbonneaux
2015-09-30uniformize alignment code in framesz()Quentin Carbonneaux
2015-09-30fix two invalid Tmp.spill valuesQuentin Carbonneaux
2015-09-29wip on new stack slots (emit, spill)Quentin Carbonneaux
2015-09-29more fixes for the new slot representationQuentin Carbonneaux
2015-09-29wip on a simpler slot handlingQuentin Carbonneaux
2015-09-28stupid hinting works better without traces!Quentin Carbonneaux
2015-09-27compute reg interferences in filllive()Quentin Carbonneaux
2015-09-26do not merge phi classes of interfering tempsQuentin Carbonneaux
2015-09-26move the liveon() function in live.cQuentin Carbonneaux
2015-09-25fresh new trace based allocator (needs tuning)Quentin Carbonneaux
2015-09-25prepare rega for trace-based allocationQuentin Carbonneaux
2015-09-25add union-find based phi-class computationQuentin Carbonneaux
2015-09-25change controversial (at best) typedefQuentin Carbonneaux
2015-09-25move return type information into FnQuentin Carbonneaux
2015-09-22small simplification in seljmpQuentin Carbonneaux
2015-09-22improve error reporting in the parserQuentin Carbonneaux
2015-09-22do not do dce on register assignmentsQuentin Carbonneaux
2015-09-22compile retw and retl as a move in raxQuentin Carbonneaux
2015-09-22oops, missing newline in pretty-printerQuentin Carbonneaux
2015-09-22parse return types of functionsQuentin Carbonneaux
2015-09-21print size suffix for swapQuentin Carbonneaux
2015-09-21fix rega bug for indirect callsQuentin Carbonneaux
2015-09-21emit syntactically valid callsQuentin Carbonneaux
2015-09-20factor formatting inside emitfQuentin Carbonneaux
2015-09-20simplify two loops with a pointerQuentin Carbonneaux
2015-09-20save callee-save registersQuentin Carbonneaux
2015-09-18add the first stand-alone test programQuentin Carbonneaux
2015-09-18use new function syntax in testsQuentin Carbonneaux
2015-09-17this fixme was really more a todoQuentin Carbonneaux
2015-09-17add hack in emit to support stack argumentsQuentin Carbonneaux
The number stored in the .val field of SLOTs has to be sign extended, so we can reach into the caller's frame when necessary (arguments passed on the stack).
2015-09-17fix buggy handling of stack arguments in selpar()Quentin Carbonneaux
2015-09-17fix two bugs in selpar()Quentin Carbonneaux
- One missing argument for OAlloc. - One reference shuffling.
2015-09-17pretty print OPar os parnQuentin Carbonneaux
2015-09-17parse parameter lists of functionsQuentin Carbonneaux
2015-09-17fix memcpy bugQuentin Carbonneaux
2015-09-17start work on fuction parametersQuentin Carbonneaux
2015-09-16follow suggestion of gccQuentin Carbonneaux
2015-09-15use unison default choicesQuentin Carbonneaux
2015-09-15synchronize large doc with unisonQuentin Carbonneaux
2015-09-15fix call bug in regaQuentin Carbonneaux
When rdx is used to return a value and is used as argument, it is in the call defs and hence made dead by the loop modified here. This is obviously erroneous behavior. We instead rephrase the loop to make it clear that among the caller-save registers, only the ones used by the call must be live before the call.
2015-09-15simplify call handling in spillerQuentin 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-15emit stack fixup only when necessaryQuentin Carbonneaux
2015-09-15cosmetic indentation style fixQuentin Carbonneaux
2015-09-15reshuffle instructions around callQuentin Carbonneaux
2015-09-15drop arity information from OpDescQuentin Carbonneaux
2015-09-15add a simple function call testQuentin Carbonneaux
2015-09-15hack to enable proper regalloc on callsQuentin Carbonneaux
I add the dual to dummy uses: dummy defs. They are compiled to nothing, but help preserving the invariants I had when writing the register allocator. Clearly, there should be a better way.