Age | Commit message (Collapse) | Author | |
---|---|---|---|
2021-06-17 | amd64: fix conditional jump when compare is swapped and used elsewhere | Michael Forney | |
selcmp may potentially swap the arguments and return 1 indicating that the opposite operation should be used. However, if the compare result is used for a conditional jump as well as elsewhere, the original compare op is used instead of the opposite. To fix this, add a check to see whether the opposite compare should be used, regardless of whether selcmp() is done now, or later on during sel(). Bug report and test case from Charlie Stanton. | |||
2019-04-30 | isel fix for amd64 memory stores | Quentin Carbonneaux | |
The value argument of store instructions was handled incorrectly. | |||
2019-04-29 | fix folding of unsigned operations | Quentin Carbonneaux | |
This fixes similar bugs than the ones fixed in the previous commit. In the folding code the invariant is that when a result is 32 bits wide, the low 32 bits of 'x' are correct. The high bits can be anything. | |||
2019-04-29 | fold: Make sure 32-bit constants get sign extended when necessary | Michael Forney | |
2019-04-26 | new large test to evaluate performance | Quentin Carbonneaux | |
This was generated by csmith and then compiled to qbe il by Michael Forney's C compiler. | |||
2019-04-26 | update conaddr test to catch early segfaults | Quentin Carbonneaux | |
2019-04-26 | restore some code from b4a98c | Quentin Carbonneaux | |
I had forgotten that %rip can only be used as base when there is no index. I also added a test which stresses addressing selection with and without constants. | |||
2019-03-12 | emit valid code for mem->mem copies | Quentin Carbonneaux | |
2019-03-09 | add a stress test for phi spilling | Quentin Carbonneaux | |
2019-02-21 | fix amd64 addressing mode matcher | Quentin Carbonneaux | |
The numberer made some arranging choices when numbering arguments of an instruction, but these decisions were ignored when matching. The fix is to reconcile numbering and matching. | |||
2019-02-18 | mark phi arguments as escaping | Quentin Carbonneaux | |
Thanks to Michael Forney for spotting this oversight and providing the test case. Note: because esc() leaves ABot unchanged, the assertion "a->type == ABot" on line 122 remains valid. | |||
2019-02-06 | 2 bug fixes in rega | Quentin Carbonneaux | |
The worst one was that "part 3" of rega() could break the critical invariant that two interferring temporaries get assigned different registers. This is fixed by being careful when changing the register of a temporary based on predecessor blocks. Thanks to Michael Forney for reporting these bugs and helping with the analysis. | |||
2017-09-22 | mark printf call as variadic in test | Quentin Carbonneaux | |
2017-07-30 | fix dynamic stack allocs for amd64 | Quentin Carbonneaux | |
The arm64 might have the same problem but it is currently unable to handle them even in instruction selection. Thanks to Jean Dao for reporting the bug. | |||
2017-04-08 | new abi test for arm64 HFAs | Quentin Carbonneaux | |
2017-04-08 | enable arm64 tests | Quentin Carbonneaux | |
The vararg tests had to be changed because va_list is 32-bit wide on arm. The astute reader will notice that the way we pass va_list values is wrong, we should be using the ':valist' type as defined below instead of 'l'. But eh, that works for now, because of the ABI. type :valist = align 8 { 32 } | |||
2017-03-03 | add another idiomatic C test (rega does no good) | Quentin Carbonneaux | |
2017-02-23 | add simple idiomatic c test | Quentin Carbonneaux | |
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 ...). | |||
2016-12-12 | new tests for the load optimization | Quentin Carbonneaux | |
2016-12-12 | new eight queens test | Quentin Carbonneaux | |
2016-08-16 | add support for unions in sysv abi | Quentin Carbonneaux | |
2016-04-22 | refine fp conversion instructions | 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-12 | use a shift to divide by 2 in collatz | Quentin Carbonneaux | |
2016-04-12 | fix type bug in abi3 test | Quentin Carbonneaux | |
2016-04-01 | add huge mandelbrot brainfuck example | Quentin Carbonneaux | |
2016-04-01 | add big test file for qbe | Quentin Carbonneaux | |
2016-03-29 | make block labels per-function | Quentin Carbonneaux | |
2016-03-29 | new layout, put LICENSE in root | Quentin Carbonneaux | |
2016-03-28 | implement export control | Quentin Carbonneaux | |
2016-03-27 | mac os compatibility fixes in scripts | Quentin Carbonneaux | |
2016-03-27 | move check rule into src/ | Quentin Carbonneaux | |
2016-03-27 | extract tests out of src | Quentin Carbonneaux | |