diff options
| author | Quentin Carbonneaux <quentin@c9x.me> | 2019-04-11 19:36:13 +0200 |
|---|---|---|
| committer | Quentin Carbonneaux <quentin@c9x.me> | 2019-04-11 20:18:20 +0200 |
| commit | 81da1cdebb213077a1ce2c1aaed051de0751e13c (patch) | |
| tree | 0d4022e2db324543bf9e0caf802043a5b11495d7 /test | |
| parent | d84f5fcbb75dcf8f6ff1f12e7509d05598a4b561 (diff) | |
| download | roux-81da1cdebb213077a1ce2c1aaed051de0751e13c.tar.gz | |
properly detect ssa form
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.
Diffstat (limited to 'test')
0 files changed, 0 insertions, 0 deletions
