From 1adc9a307ca9009a9cd39b7ed109cd9ecb597200 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 21 Mar 2023 20:51:13 -0700 Subject: compiler: bug: unmatchable pattern in optimizer. This was uncovered by unused variable warnings. * stdlib/optimize.tl (basic-blocks peephole-block): The pattern trying to detect wasteful register moves is incorrect; the reg1 term is intended to be the @reg1 variable. It is matched literally and so will not match because the symbol reg1 does not literally occur in the VM code. --- stdlib/optimize.tl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stdlib/optimize.tl b/stdlib/optimize.tl index 329bae03..7681bca1 100644 --- a/stdlib/optimize.tl +++ b/stdlib/optimize.tl @@ -397,7 +397,7 @@ ;; wasteful moves (((mov @reg0 @nil) (mov @reg0 @nil) . @nil) (cdr insns)) - (((mov @reg0 @reg1) (mov reg1 @reg0) . @rest) + (((mov @reg0 @reg1) (mov @reg1 @reg0) . @rest) (pushnew bl bb.rescan) (set bb.recalc t) ^(,(car insns) ,*rest)) -- cgit v1.2.3