diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2021-09-29 22:46:01 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2021-09-29 22:46:01 -0700 |
commit | 68f856fc1fe2f662e3771bec32fb447304c56818 (patch) | |
tree | 010d45e223c62a54568f01392da7ef7042d7d7c8 /linenoise/LICENSE | |
parent | b9398943c06b8d0503f71eda56c59dcd36e826e2 (diff) | |
download | txr-68f856fc1fe2f662e3771bec32fb447304c56818.tar.gz txr-68f856fc1fe2f662e3771bec32fb447304c56818.tar.bz2 txr-68f856fc1fe2f662e3771bec32fb447304c56818.zip |
compiler: remove impossible cases in jump threading.
* stdlib/optimize.tl (basic-blocks thread-jumps-block): There
can't be any instructions in a basic block after an if or ifq,
so in these cases, jrest is always nil. Let's ignore that nil
efficiently with @nil, and get rid of the cut-block branches
of the code. There is a similar case in peephole-block, but
the target of the jump is an (end ...) which doesn't
necessarily end a basic block. I temporarily put in an (assert
(null jrest)), and, surprisingly, it never went off during a
rebuild of the library or running of the test case. Still,
only a jend ends a basic block; it would not be correct to
simplify it like these two cases in thread-jumps-block.
Diffstat (limited to 'linenoise/LICENSE')
0 files changed, 0 insertions, 0 deletions