Age | Commit message (Collapse) | Author | |
---|---|---|---|
2015-10-30 | simplify constant handling in amatch() | Quentin Carbonneaux | |
2015-10-30 | store constant addresses in Mem.offset | Quentin Carbonneaux | |
2015-10-30 | don't share mems containing temporaries | Quentin Carbonneaux | |
This can cause trouble in register allocation when these temporaries get replaced by registers. On the other hand, offsetted slots and constants can safely be shared. | |||
2015-10-30 | mention addressing modes in isel main comment | Quentin Carbonneaux | |
2015-10-30 | start integrating RAMem references | Quentin Carbonneaux | |
2015-10-30 | prepare for using memory refs | Quentin Carbonneaux | |
2015-10-30 | fix test for load folding | Quentin Carbonneaux | |
2015-10-30 | stick scales close to their instruction | Quentin Carbonneaux | |
2015-10-30 | start work on fusing loads in arithmetic | Quentin Carbonneaux | |
2015-10-30 | first attempt at address matching | Quentin Carbonneaux | |
2015-10-30 | cosmetics on address numbering code | Quentin Carbonneaux | |
2015-10-30 | store addressability infos in a struct | Quentin Carbonneaux | |
2015-10-30 | do not give an addressability number to scales | Quentin Carbonneaux | |
2015-10-30 | store child matchings in the addressing table | Quentin Carbonneaux | |
2015-10-30 | missed a few cases in the tree automaton | Quentin Carbonneaux | |
2015-10-30 | start adress mode recognition | Quentin Carbonneaux | |
2015-10-30 | rename spill field in Tmp to slot | Quentin Carbonneaux | |
2015-10-30 | emit code for extensions, move slots into RAlt | Quentin Carbonneaux | |
2015-10-19 | uniformize sign extension and mem loads | Quentin Carbonneaux | |
2015-10-06 | add pool memory management | Quentin Carbonneaux | |
2015-10-06 | use new vector functions instead of reallocs | Quentin Carbonneaux | |
2015-10-06 | specialize vdup into idup | Quentin Carbonneaux | |
2015-10-06 | factor ins array edition in icpy | Quentin Carbonneaux | |
2015-10-05 | factor vector duplication in vdup() | Quentin Carbonneaux | |
2015-10-05 | factor some utility functions/data in util.c | Quentin Carbonneaux | |
2015-10-05 | clean the command line interface | Quentin Carbonneaux | |
2015-10-01 | fix a bug for structure arguments in regs | Quentin Carbonneaux | |
2015-09-30 | remove dead assignment | Quentin Carbonneaux | |
2015-09-30 | fix two invalid Tmp.spill values | Quentin Carbonneaux | |
2015-09-29 | wip on new stack slots (emit, spill) | Quentin Carbonneaux | |
2015-09-29 | more fixes for the new slot representation | Quentin Carbonneaux | |
2015-09-29 | wip on a simpler slot handling | Quentin Carbonneaux | |
2015-09-22 | small simplification in seljmp | Quentin Carbonneaux | |
2015-09-22 | compile retw and retl as a move in rax | Quentin Carbonneaux | |
2015-09-20 | save callee-save registers | Quentin Carbonneaux | |
2015-09-17 | this fixme was really more a todo | Quentin Carbonneaux | |
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 | fix memcpy bug | Quentin Carbonneaux | |
2015-09-17 | start work on fuction parameters | 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 | reshuffle instructions around call | 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 | 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 | get rid of OTrunc | Quentin Carbonneaux | |