From c7744fae69b314f1eaf68b2b60de3e90d4cad264 Mon Sep 17 00:00:00 2001
From: felix
Date: Wed, 18 Sep 2019 14:59:51 +0200
Subject: [PATCH] Revert "Revert half of "Add some optimizer simplification
rules""
This reverts commit d8727f4a9bdfded30813a5a433b57eddf60c068f.
---
optimizer.scm | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/optimizer.scm b/optimizer.scm
index bd163710..fc2d3165 100644
--- a/optimizer.scm
+++ b/optimizer.scm
@@ -830,6 +830,38 @@
args1)
nargs)
#t))
+ (else (loop (cdr args)
+ (cons (car args) nargs)
+ ok)))))))
+
+ ;; (let (( (##core#inline ...)))
+ ;; ( ... ...))
+ ;; -> ( ... (##core#inline ...) ...)
+ ;; ...))
+ ;; - is used only once.
+ `((let (var) (##core#inline (op) . args1)
+ (##core#call p . args2))
+ (var op args1 p args2)
+ ,(lambda (db may-rewrite var op args1 p args2)
+ (and may-rewrite ; give other optimizations a chance first
+ (= 1 (length (db-get-list db var 'references)))
+ (let loop ((args args2) (nargs '()) (ok #f))
+ (cond ((null? args)
+ (and ok
+ (make-node
+ '##core#call p
+ (reverse nargs))))
+ ((and (eq? '##core#variable
+ (node-class (car args)))
+ (eq? var
+ (car (node-parameters (car args)))))
+ (loop (cdr args)
+ (cons (make-node
+ '##core#inline
+ (list op)
+ args1)
+ nargs)
+ #t))
(else (loop (cdr args)
(cons (car args) nargs)
ok))))))))
--
2.19.1