Age | Commit message (Collapse) | Author | |
---|---|---|---|
2017-02-27 | cosmetic fixes | Quentin Carbonneaux | |
2017-02-25 | do sign/zero extensions removal in copy.c | Quentin Carbonneaux | |
2017-02-24 | cosmetic modifications to emit.c | Quentin Carbonneaux | |
2017-02-24 | start a new simplification pass | Quentin Carbonneaux | |
2017-02-24 | fix pretty bad bug in alias analysis | Quentin Carbonneaux | |
When a temporary marked local is escaping, the whole slot must be marked as such. To solve this, Alias now holds a pointer to the alias information of the slot. For simplicity of the code, this pointer is always valid and fetching ->type out of it is meaningful. | |||
2017-02-24 | wrong assumption killsl() | Quentin Carbonneaux | |
2017-02-24 | improve the range of action of load elimination | Quentin Carbonneaux | |
When eliminating `load %foo`, don't limit the search to the live range of %foo, but to the live range of its aliasing information. For example, if %foo is a constant offset into a stack-allocated slot, %foo =l add %slot, 42 the search will proceed on all the code in which %slot is live, not only below the definition of %foo, like before. | |||
2017-02-24 | deduplicate loadsz & storesz | Quentin Carbonneaux | |
2017-02-24 | reenable and fix a bug in memopt | Quentin Carbonneaux | |
While a minimal dead store elimination is not implemented, the generated code looks quite a bit better with them enabled. It also is quite cheap. | |||
2017-02-24 | update isel comment | Quentin Carbonneaux | |
2017-02-23 | add simple idiomatic c test | Quentin Carbonneaux | |
2017-02-23 | propagate aliasing information through copies | Quentin Carbonneaux | |
2017-02-22 | do not err on address comparisons | Quentin Carbonneaux | |
While I was at it I also refreshed some bits in the instruction selection. | |||
2017-02-22 | turn the instruction index into a list | Quentin Carbonneaux | |
2017-02-17 | stricter class constraints for store & vastart | Quentin Carbonneaux | |
2017-02-15 | comment fix | Quentin Carbonneaux | |
2017-02-15 | add support for closure calls | Quentin Carbonneaux | |
Compiling languages with closures often requires passing an extra environment parameter to the called function. One solution is to use a convention, and reserve, say, the first argument for that purpose. However, that makes binding to C a little less smooth. Alternatively, QBE now provides a way to remain fully ABI compatible with C by having a "hidden" environment argument (marked with the keyword 'env'). Calling a function expecting an environment from C will make the contents of the environment undefined, but the normal arguments will be passed without alteration. Conversely, calling a C function like it is a closure by passing it an environemnt will work smoothly. | |||
2017-02-14 | minor cleanup in all.h | Quentin Carbonneaux | |
2017-02-10 | update minic for new vararg support | Quentin Carbonneaux | |
We conservatively assume all functions have variable argument lists. | |||
2017-02-10 | tests for variable argument lists | Quentin Carbonneaux | |
2017-02-10 | support variable argument lists | Quentin Carbonneaux | |
This change is backward compatible, calls to "variadic" functions (like printf) must now be annotated (with ...). | |||
2017-02-08 | make rsp and rbp globally live | Quentin Carbonneaux | |
2017-02-07 | update assert() missed in 7e1c1f | Quentin Carbonneaux | |
2017-02-06 | fix edge deletion bug in sccp | Quentin Carbonneaux | |
When an edge is deleted, the phis and predecessors of the destination block have to be updated. This is what blkdel() was doing, but at a level too coarse. The new function edgedel() allows to remove a single edge (and takes care of multiple edges). | |||
2017-02-06 | robustness fix in fillfron() | Quentin Carbonneaux | |
This makes it possible to call it several times in a row. | |||
2017-02-06 | use uint for block ids | Quentin Carbonneaux | |
2017-02-03 | create an index for the instructions in the IL doc | Quentin Rameau | |
2017-02-01 | fix the same bug in varget() | Quentin Carbonneaux | |
2017-02-01 | fix bug in varadd(), thanks Ed Davis | Quentin Carbonneaux | |
2017-01-20 | create an instruction index for the IL doc | Quentin Rameau | |
2017-01-20 | change 'b' and 'h' ordering in IL doc | Quentin Rameau | |
2017-01-12 | use a less obtuse api for vnew() | Quentin Carbonneaux | |
2017-01-10 | isel fixes for lame apple assembler | Quentin Carbonneaux | |
2017-01-07 | remove styling from generated html | Quentin Carbonneaux | |
2017-01-06 | prepare for new c9x infrastructure | Quentin Carbonneaux | |
2017-01-04 | attempt to fix cc flags in tests | Quentin Carbonneaux | |
2017-01-04 | improve performance of bsiter() | Quentin Carbonneaux | |
2017-01-04 | more performance improvements in the parser | Quentin Carbonneaux | |
2016-12-31 | use a perfect hash for lexing | Quentin Carbonneaux | |
2016-12-31 | minor bugs in lexh tool | Quentin Carbonneaux | |
2016-12-30 | new tool to improve lexing speed | Quentin Carbonneaux | |
2016-12-29 | remove debugging stub | Quentin Carbonneaux | |
2016-12-29 | do not create useless mem refs | Quentin Carbonneaux | |
2016-12-29 | simplify seladdr() | Quentin Carbonneaux | |
This also provides a violent fix to a bug causing an invalid addressing to be generated when indexing into a global variable. The fix is not satisfactory, though, as bad code is generated (instead of invalid code before). | |||
2016-12-28 | fix escapes handling (patch from ac) | Quentin Carbonneaux | |
2016-12-28 | loosen assertion in load elimination | Quentin Carbonneaux | |
The assertion was invalid, I was assuming il->blk was b when writing it. The new assertion should be right: If the loop level were to decrease we would get out of a cycle in cfg, this should not be possible unless we go through a block with more than 1 predecessor. | |||
2016-12-21 | schedule loop nesting computations earlier | Quentin Carbonneaux | |
2016-12-21 | fix wrong assertion in load elimination | Quentin Carbonneaux | |
The assertion fails incorrectly on a block right after the end of a loop. | |||
2016-12-12 | use the new load optimization | Quentin Carbonneaux | |
2016-12-12 | new tests for the load optimization | Quentin Carbonneaux | |