Age | Commit message (Collapse) | Author | |
---|---|---|---|
2022-11-22 | rename Tmp.ins to be more descriptive | Quentin Carbonneaux | |
2022-11-20 | fill definition site in filluse() | Quentin Carbonneaux | |
2022-10-03 | fix case of Pool constants | Quentin Carbonneaux | |
2022-10-03 | refine width of parsb/ub/sh/uh ops | Quentin Carbonneaux | |
2020-08-06 | Use a dynamic array for phi arguments | Michael Forney | |
2019-04-11 | properly detect ssa form | Quentin Carbonneaux | |
Previously, we would skip ssa construction when a temporary has a single definition. This is only part of the ssa invariant: we must also check that all uses are dominated by the single definition. The new code does this. In fact, qbe does not store all the dominators for a block, so instead of walking the idom linked list we use a rough heuristic and declare conservatively that B0 dominates B1 when one of the two conditions is true: a. B0 is the start block b. B0 is B1 Some measurements on a big file from Michael Forney show that the code is still as fast as before this patch. | |||
2019-03-01 | skip expensive ssa-building loop when possible | Quentin Carbonneaux | |
If a temporary is assigned exactly once (most are), there is no need to do any work to put it in ssa form. On an input file of ~35k loc, this makes the processing time go from 2.9 secs to 1.2 secs. | |||
2018-04-26 | Fix compiler warnings. | Emil Skoeldberg | |
Compiler warned about comparison between signed and unsigned values. | |||
2017-05-16 | do not account for interferences in phi classes | Quentin Carbonneaux | |
Before this commit, I tried to make sure that two interfering temporaries never ended up in the same phi class. This was to make sure that their register hints were not counterproductively stepping on each other's toes. The idea is fine, but: * the implementation is clumsy because it mixes the orthogonal concepts of (i) interference and (ii) phi classes; * the hinting process in the register allocator is hard to understand because the disjoint-set data structure used for phi classes is cut in arbitrary places. After this commit, the phi classes *really* are phi classes represented with a proper disjoint-set data structure. | |||
2017-02-25 | do sign/zero extensions removal in copy.c | Quentin Carbonneaux | |
2017-02-06 | use uint for block ids | Quentin Carbonneaux | |
2017-01-12 | use a less obtuse api for vnew() | Quentin Carbonneaux | |
2016-12-12 | create cfg.c for cfg-related functions | Quentin Carbonneaux | |
2016-08-15 | specify the allocation function in vnew | Quentin Carbonneaux | |
2016-04-19 | check for trivial undefined uses in ssacheck | Quentin Carbonneaux | |
2016-04-18 | factor some subtyping logic in clsmerge() | Quentin Carbonneaux | |
2016-04-13 | handle odd jumps in blkdel() an renblk() | Quentin Carbonneaux | |
2016-04-13 | do not compute def-use links for regs | Quentin Carbonneaux | |
2016-04-13 | hack an ssa validator (likely buggy) | Quentin Carbonneaux | |
2016-04-12 | fix bug in predecessors filling code | Quentin Carbonneaux | |
2016-04-12 | simplify fillpreds() code | Quentin Carbonneaux | |
2016-04-09 | add a proper block deletion routine | Quentin Carbonneaux | |
2016-03-31 | cleanup error handling | Quentin Carbonneaux | |
2016-03-29 | new layout, put LICENSE in root | Quentin Carbonneaux | |