diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-09-14 00:14:17 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-09-14 00:14:17 -0700 |
commit | 44f4ef01ce095d334769b071460f19c5d74217c3 (patch) | |
tree | 410b8f9f8711f4beda16f67b4053a1cc46bd7595 /alloca.h | |
parent | cd1260bb180dae6686a7059540e49ebe9f1b7543 (diff) | |
download | txr-44f4ef01ce095d334769b071460f19c5d74217c3.tar.gz txr-44f4ef01ce095d334769b071460f19c5d74217c3.tar.bz2 txr-44f4ef01ce095d334769b071460f19c5d74217c3.zip |
compiler: fix random perturbance in reg allocation.
At optimization level 2 or higher, an issue occurs whereby
code generation exhibits instabilities. The same code is
compiled slightly differently (but not incorrectly) depending
on irrelevant circumstances, due to some different registers
being used.
* stdlib/compiler.tl (compiler eliminate-frame): Do not free
the newly allocated t-registers inside a dohash loop.
We have a separate list of them in order; just hand that off
to free-tregs. The dohash loop is not ordered, because it
traverses a hash, which is keyed by object identities; i.e.
machine addresses assigned by memory allocation.
Diffstat (limited to 'alloca.h')
0 files changed, 0 insertions, 0 deletions