summary refs log tree commit diff
path: root/lisc/main.c
AgeCommit message (Collapse)Author
2015-10-08change end comment for functionsQuentin Carbonneaux
2015-10-08improve debug outputQuentin Carbonneaux
2015-10-08allow multiple functions in fileQuentin Carbonneaux
2015-10-07finish implementing data parsingQuentin Carbonneaux
2015-10-06add pool memory managementQuentin Carbonneaux
2015-10-05clean the command line interfaceQuentin Carbonneaux
2015-09-25add union-find based phi-class computationQuentin 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-15start work on aggregate typesQuentin Carbonneaux
The parser now has some code to parse the description of structured types. I tried to be even less specific than LLVM "type" by creating just enough abstraction so that I can deal with both AARCH64 and x64. The base types used in the definition of an aggregate are really just syntactic sugar to give a structure a size and an alignment. Only the location of float components matters for the compilation. In particular this means that the front-ends have to know how the ABI works to pass/return small integer types. This also means that the font-end has to be aware of the layout of structures. Chris Lattner has a proposition [1] for LLVM that is still pending and goes in the direction of giving more control of the ABI the front-end. [1]: http://www.nondot.org/sabre/LLVMNotes/ExtendedIntegerResults.txt
2015-09-15update emit to the new settingQuentin Carbonneaux
2015-09-15more modifications to regaQuentin Carbonneaux
2015-09-15add a size to all operations (wip)Quentin Carbonneaux
2015-09-15use correct sizes during reg allocationQuentin Carbonneaux
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-15start change of representation for registersQuentin Carbonneaux
2015-09-15perform isel before code emissionQuentin Carbonneaux
2015-09-15add a code emitter for at&t syntaxQuentin Carbonneaux
2015-09-15complete a crude register allocatorQuentin Carbonneaux
2015-09-15test iselQuentin Carbonneaux
2015-09-15move some debug output out of mainQuentin Carbonneaux
2015-09-15cosmeticsQuentin Carbonneaux
2015-09-15improve output, add debug arrayQuentin Carbonneaux
2015-09-15show more spilling dataQuentin Carbonneaux
2015-09-15attempt more correct loop markingQuentin Carbonneaux
2015-09-15more testing codeQuentin Carbonneaux
2015-09-15test code for the spillerQuentin Carbonneaux
2015-09-15rework liveness to compute reg pressureQuentin Carbonneaux
2015-09-15move main function out of parse.cQuentin Carbonneaux