summaryrefslogtreecommitdiffstats
path: root/mpi-patches/mpi-to-double
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2025-06-16 22:29:35 -0700
committerKaz Kylheku <kaz@kylheku.com>2025-06-16 22:29:35 -0700
commitd06ffa36d79963dd084628d24a455517bb333a92 (patch)
tree5f9862fce6e9f3a8342942bcada4bde9d8b91469 /mpi-patches/mpi-to-double
parent7083b6a325f3fdb0e2a08866e2bd15399afa90b2 (diff)
downloadtxr-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