summaryrefslogtreecommitdiffstats
path: root/parser.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2025-06-18 00:13:33 -0700
committerKaz Kylheku <kaz@kylheku.com>2025-06-18 00:13:33 -0700
commit54a76c674e18e079b4a4f4338f41e44bfd5ed3e3 (patch)
tree10498f76e33f907f8ee2d6dd3313302ba39dafc3 /parser.c
parentb6479c689570ae3df42a45da6d96fc679a5925f3 (diff)
downloadtxr-54a76c674e18e079b4a4f4338f41e44bfd5ed3e3.tar.gz
txr-54a76c674e18e079b4a4f4338f41e44bfd5ed3e3.tar.bz2
txr-54a76c674e18e079b4a4f4338f41e44bfd5ed3e3.zip
compiler: bug: handling of block returns.
The handling of block returning instructions ret and abscsr is incorrect and causes miscompilations, such as infinite loops. * stdlib/optimize.tl (basic-blocks jump-ops): Remove ret and abscsr. These instructions will no longer terminate basic blocks. (basic-blocks link-graph): Remove the instructions from the pattern match here; they won't occur any more as the last instruction of a block. Note that they were being handled together as a jend: effectively as a signal indicating the brick wall end of control flow with no next basic block. This is what caused the problems.
Diffstat (limited to 'parser.c')
0 files changed, 0 insertions, 0 deletions