aboutsummaryrefslogtreecommitdiff
path: root/Changelog.md
diff options
context:
space:
mode:
authorShinya Sato <shinnya.sato@gmail.com>2026-03-21 20:10:16 +0900
committerShinya Sato <shinnya.sato@gmail.com>2026-03-21 20:10:16 +0900
commit11dd49da1625e1a8197c6d9f8d22743a974ddb72 (patch)
treea4f69ccc2bfaafb3144dd49f225d526c47a157f5 /Changelog.md
parentfe97dadef0a6bd009998952a3183ec6822cf6fbc (diff)
downloadinpla-11dd49da1625e1a8197c6d9f8d22743a974ddb72.tar.gz
inpla-11dd49da1625e1a8197c6d9f8d22743a974ddb72.zip
V0.13.2-1
Diffstat (limited to 'Changelog.md')
-rw-r--r--Changelog.md32
1 files changed, 32 insertions, 0 deletions
diff --git a/Changelog.md b/Changelog.md
index 231344e..a9c7d5c 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -1,5 +1,37 @@
# Change log
+### v0.13.2-1 (released on 21 March 2026)
+
+#### Bug fix
+
+- **Fixed a register reallocation bug during intermediate code optimisation**
+ During the register reallocation pass, the optimiser correctly reuses a source register (`src`) in a `LOAD src, dest` instruction if it is no longer used later in the block. However, a bug caused the optimiser to incorrectly apply this same logic to `LOADI $i, dest` instructions, mistakenly interpreting the immediate value (`$i`) as a register ID. This version fixes this optimisation bug. As a result, parsing and compiling long lists with distinct elements (e.g., `1..100`) can now finally be completed without crashing!
+
+ ```c
+ int CmEnv_Optimise_check_occurence_in_block(int localvar,
+ int target_imcode_addr) {
+ ...
+
+ case OP_LOAD:
+ case OP_LOADI:
+ // OP src1 dest
+ if (imcode->operand1 == localvar) {
+ return 1;
+ }
+ break;
+ ==>
+ case OP_LOAD:
+ //case OP_LOADI:
+ // OP src1 dest
+ if (imcode->operand1 == localvar) {
+ return 1;
+ }
+ break;
+
+ ```
+
+
+
### v0.13.2 (released on 16 March 2026)
#### Polished