diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2025-06-16 22:29:35 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2025-06-16 22:29:35 -0700 |
commit | d06ffa36d79963dd084628d24a455517bb333a92 (patch) | |
tree | 5f9862fce6e9f3a8342942bcada4bde9d8b91469 /mpi-patches/mpi-to-double | |
parent | 7083b6a325f3fdb0e2a08866e2bd15399afa90b2 (diff) | |
download | txr-d06ffa36d79963dd084628d24a455517bb333a92.tar.gz txr-d06ffa36d79963dd084628d24a455517bb333a92.tar.bz2 txr-d06ffa36d79963dd084628d24a455517bb333a92.zip |
compiler: bug: register liveness of block insn.
* stdlib/optimize.tl (basic-blocks local-liveness):
For the block instruction, we must mark the destination
register as being defined. This is in spite of the block
instruction not actually itself writing to it. The
entire block as such defines the register; any part of
the block could be interrupted by a nonlocal return to
that bock, which will then set that register and jump
past the block. Nothing in the block should be doing
anything with the register except for a final move into
it at the end of the block and the end instruction which
references it. If we don't use ref-def, it's possible
for register renaming code to wrongly rename the destination
register.
Diffstat (limited to 'mpi-patches/mpi-to-double')
0 files changed, 0 insertions, 0 deletions