Age | Commit message (Collapse) | Author | |
---|---|---|---|
2016-04-16 | fix relic error message | Quentin Carbonneaux | |
2016-04-13 | add regression test for liveon bug | Quentin Carbonneaux | |
2016-04-13 | add regression test for fixarg bug | Quentin Carbonneaux | |
2016-04-13 | call fixarg on the correct instruction | Quentin Carbonneaux | |
Because one call to fixarg can emit an instruction, using curi, for the second fixarg calls patched is incorrect. AFL found that bug. | |||
2016-04-13 | add funny 80 target | Quentin Carbonneaux | |
2016-04-13 | oops, memcpy -> memmove | Quentin Carbonneaux | |
2016-04-13 | check types on assignments | Quentin Carbonneaux | |
2016-04-13 | turn alignment asserts into err() | 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-13 | add unsigned comparisons to emit | Quentin Carbonneaux | |
2016-04-13 | handle the bad jump case | Quentin Carbonneaux | |
2016-04-13 | add new minic test | Quentin Carbonneaux | |
2016-04-13 | separate name and index in newtmp() | Quentin Carbonneaux | |
2016-04-13 | harden memopt() | Quentin Carbonneaux | |
2016-04-12 | bug in checking of multiple definitions | Quentin Carbonneaux | |
2016-04-12 | subtle bug in liveness! | Quentin Carbonneaux | |
If on of the phis in a block A uses the result of another one when coming from B, we have to be careful! | |||
2016-04-12 | add missing idiv in opdesc[] | Quentin Carbonneaux | |
2016-04-12 | cosmetic modification in fold | Quentin Carbonneaux | |
2016-04-12 | simplify latmerge() | Quentin Carbonneaux | |
2016-04-12 | nicer agony message in isel | Quentin Carbonneaux | |
2016-04-12 | the lattice merge has to be used in update() | Quentin Carbonneaux | |
2016-04-12 | fix wrong isext() macro | Quentin Carbonneaux | |
2016-04-12 | oops, dumb bug in folding | Quentin Carbonneaux | |
2016-04-12 | use a shift to divide by 2 in collatz | Quentin Carbonneaux | |
2016-04-12 | more extensive handling of fast locals | Quentin Carbonneaux | |
2016-04-12 | avoid a few hangs in parsing code | Quentin Carbonneaux | |
2016-04-12 | check invalid instruction types | Quentin Carbonneaux | |
2016-04-12 | both comparison arguments need to be fixed | Quentin Carbonneaux | |
The second argument will not be a constant because of the assertion. But it could be a fast local, and this situation needs to be handled by the last case of fixarg(). | |||
2016-04-12 | frendlier error message in emit | Quentin Carbonneaux | |
2016-04-12 | add simple il validation | Quentin Carbonneaux | |
2016-04-12 | fix typo in emit | Quentin Carbonneaux | |
2016-04-12 | handle dumb conditional jumps in isel | Quentin Carbonneaux | |
I also removed the code to handle jumps with a constant argument since those should be eliminated by the folding pass. | |||
2016-04-12 | fix bug in predecessors filling code | Quentin Carbonneaux | |
2016-04-12 | fix type bug in abi3 test | Quentin Carbonneaux | |
2016-04-12 | simplify fillpreds() code | Quentin Carbonneaux | |
2016-04-12 | diagnose some undefined uses | Quentin Carbonneaux | |
2016-04-12 | oops, wrong test in abi classify() | Quentin Carbonneaux | |
2016-04-11 | improve help message slightly | Quentin Carbonneaux | |
2016-04-09 | this can be false | Quentin Carbonneaux | |
I think I should check for Top when rewriting. Because for sure, we don't want to replace some temporary by Top, first, I can't represent it, and second, it'd mean that it is a temporary used undefined. The example that triggered the assertion was like that: @b0 jnz 1, @b1, @b3 @b1 %x =w phi @b0 10, @b2 %x1 jnz %x, @b2, @b3 @b2 %x1 =w sub %x, 1 jmp @b1 @b3 %x2 =w phi @b1 %x, @b0 42 So SCCP optimistically assumes %x is 10 when it goes through @b1, then at the branch, @b1->@b3 is left for dead. After that, @b2 is processed and the flow worklist is empty. Now uses are processed, %x2 will get processed regardless if its block is dead or not (it is at that time), then all the back-edges are dead so the phi is set to the lattice merge of tops only. BOOM! This leads to the question, should phis of dead blocks be processed? I'll check that later. | |||
2016-04-09 | cosmetic fixes in llvm comparison | Quentin Carbonneaux | |
2016-04-09 | rebuild rpo after fold | Quentin Carbonneaux | |
2016-04-09 | did I loose my c? | Quentin Carbonneaux | |
2016-04-09 | enable constant folding | Quentin Carbonneaux | |
2016-04-09 | fix wrong assertion in fold | Quentin Carbonneaux | |
2016-04-09 | oops, forgot to patch phi arguments | Quentin Carbonneaux | |
2016-04-09 | more debug tweaks in fold | Quentin Carbonneaux | |
2016-04-09 | add a proper block deletion routine | Quentin Carbonneaux | |
2016-04-09 | nicer debug info | Quentin Carbonneaux | |