Age | Commit message (Collapse) | Author | |
---|---|---|---|
2015-09-22 | oops, missing newline in pretty-printer | Quentin Carbonneaux | |
2015-09-22 | parse return types of functions | Quentin Carbonneaux | |
2015-09-21 | print size suffix for swap | Quentin Carbonneaux | |
2015-09-21 | fix rega bug for indirect calls | Quentin Carbonneaux | |
2015-09-21 | emit syntactically valid calls | Quentin Carbonneaux | |
2015-09-20 | factor formatting inside emitf | Quentin Carbonneaux | |
2015-09-20 | simplify two loops with a pointer | Quentin Carbonneaux | |
2015-09-20 | save callee-save registers | Quentin Carbonneaux | |
2015-09-18 | add the first stand-alone test program | Quentin Carbonneaux | |
2015-09-18 | use new function syntax in tests | Quentin Carbonneaux | |
2015-09-17 | this fixme was really more a todo | Quentin Carbonneaux | |
2015-09-17 | add hack in emit to support stack arguments | Quentin 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-17 | fix buggy handling of stack arguments in selpar() | Quentin Carbonneaux | |
2015-09-17 | fix two bugs in selpar() | Quentin Carbonneaux | |
- One missing argument for OAlloc. - One reference shuffling. | |||
2015-09-17 | pretty print OPar os parn | Quentin Carbonneaux | |
2015-09-17 | parse parameter lists of functions | Quentin Carbonneaux | |
2015-09-17 | fix memcpy bug | Quentin Carbonneaux | |
2015-09-17 | start work on fuction parameters | Quentin Carbonneaux | |
2015-09-16 | follow suggestion of gcc | Quentin Carbonneaux | |
2015-09-15 | use unison default choices | Quentin Carbonneaux | |
2015-09-15 | synchronize large doc with unison | Quentin Carbonneaux | |
2015-09-15 | fix call bug in rega | Quentin 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-15 | simplify call handling in spiller | Quentin Carbonneaux | |
2015-09-15 | heavy modification of call handling | Quentin 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-15 | emit stack fixup only when necessary | Quentin Carbonneaux | |
2015-09-15 | cosmetic indentation style fix | Quentin Carbonneaux | |
2015-09-15 | reshuffle instructions around call | Quentin Carbonneaux | |
2015-09-15 | drop arity information from OpDesc | Quentin Carbonneaux | |
2015-09-15 | add a simple function call test | Quentin Carbonneaux | |
2015-09-15 | hack to enable proper regalloc on calls | Quentin 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. | |||
2015-09-15 | fix alignment for structs on the stack | Quentin Carbonneaux | |
2015-09-15 | diagnose float structs | Quentin Carbonneaux | |
2015-09-15 | implement aggregate passing in regs | Quentin Carbonneaux | |
2015-09-15 | start function call lowering (wip) | Quentin Carbonneaux | |
2015-09-15 | add parsing code for function calls | Quentin Carbonneaux | |
2015-09-15 | define a new CMPS macro, shorten Type | Quentin Carbonneaux | |
2015-09-15 | make type size unsigned | Quentin Carbonneaux | |
2015-09-15 | fix minor type parsing bugs | Quentin Carbonneaux | |
2015-09-15 | turn test files in one function definition | Quentin Carbonneaux | |
2015-09-15 | start work on aggregate types | Quentin 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-15 | add source and authorship to cprime.ssa | Quentin Carbonneaux | |
2015-09-15 | add the first generated test! | Quentin Carbonneaux | |
2015-09-15 | split some long calls | Quentin Carbonneaux | |
2015-09-15 | new alignment test | Quentin Carbonneaux | |
This test also exposes a loose handling of clobbers, I think it should be possible to compile it without spilling. | |||
2015-09-15 | get rid of OTrunc | Quentin Carbonneaux | |
2015-09-15 | fix two bugs in new emit | Quentin Carbonneaux | |
2015-09-15 | update emit to the new setting | Quentin Carbonneaux | |
2015-09-15 | new meaning for comparison types | Quentin Carbonneaux | |
Before, they designated the width of the comparison result, but now, it specifies the size of the arguments. | |||
2015-09-15 | the wide bit of OAddr matters! | Quentin Carbonneaux | |
2015-09-15 | more modifications to rega | Quentin Carbonneaux | |