summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--stdlib/compiler.tl13
1 files changed, 6 insertions, 7 deletions
diff --git a/stdlib/compiler.tl b/stdlib/compiler.tl
index 5330161d..52a0b85a 100644
--- a/stdlib/compiler.tl
+++ b/stdlib/compiler.tl
@@ -1261,13 +1261,12 @@
me.(comp-fun-form oreg env form)))
(defmeth compiler comp-arith-neg-form (me oreg env form)
- (if (> (len form) 3)
- (tree-bind (nop . args) form
- (let ((op (caseq nop (- '+) (/ '*)))
- (a1 (car args)))
- me.(comp-fun-form oreg env
- ^(,nop ,(car args) (,op ,*(cdr args))))))
- me.(comp-fun-form oreg env form)))
+ (tree-case form
+ ((nop a1 a2 a3 . args)
+ (let ((op (caseq nop (- '+) (/ '*))))
+ me.(comp-fun-form oreg env
+ ^(,nop ,a1 (,op ,a2 ,a3 ,*args)))))
+ (else me.(comp-fun-form oreg env form))))
(defmeth compiler comp-fun-form (me oreg env form)
(let* ((olev *opt-level*)