Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
selftest: recursively determine register inputs
Previously the selftest would determine which registers are supposed to contain addresses (and allocate memory accordingly) by going through all memory operations and assuming that address registers used in those are the inputs holding the addresses initially. This assumption does not hold as (1) addresses may be moved around (2) addresses may actually be a result of a previous computation. One example where this did not work was vmov rX, sY ldr tZ, [rX] here the selftest would assume that rX needs to be an address. However, sY is the register holding the address on entry of the code. This commit refines the code determining the address registers by recursively going through the DFG and determining the _input_ registers that affect values being used as addresses. Note that in the above examples rX would not be marked as an address, at it is not an input. Hopefully this approach is more robust.
- Loading branch information