Skip to content

Commit 8b1e421

Browse files
committed
Merge remote-tracking branch 'origin/artem/vampir-opt-bug' into next
2 parents 7abc935 + 44f7878 commit 8b1e421

File tree

1 file changed

+15
-15
lines changed

1 file changed

+15
-15
lines changed

src/seqn/trans.lisp

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -63,31 +63,31 @@ to (n) for some n"
6363
(let* ((zero (vamp:make-constant :const 0))
6464
(one (vamp:make-constant :const 1))
6565
(car (car (vamp:arguments obj)))
66-
(cadr (cadr (vamp:arguments obj)))
67-
(opcar (to-vampir-opt car))
68-
(opcadr (to-vampir-opt cadr))
69-
(const-check (const-check opcar opcadr)))
66+
(optcar (to-vampir-opt car)))
7067
(cond ((obj-equalp (vamp:func obj) :isZero)
71-
(if const-check
72-
(if (= (vamp:const opcar)
73-
(vamp:const opcadr))
68+
(if (typep optcar 'vamp:constant)
69+
(if (zerop (vamp:const optcar))
7470
zero
75-
one)))
71+
one)
72+
(geb.vampir:isZero optcar)))
7673
((obj-equalp (vamp:func obj) :negative)
77-
(if const-check
78-
(if (< (vamp:const opcar)
79-
(vamp:const opcadr))
80-
zero
81-
one)))
82-
(t (mapcar 'to-vampir-opt (vamp:arguments obj))))))
74+
(let ((optcadr (to-vampir-opt (cadr (vamp:arguments obj)))))
75+
(if (typep optcadr 'vamp:constant)
76+
(if (< (vamp:const optcadr) 0)
77+
zero
78+
one)
79+
(geb.vampir:negative car optcadr))))
80+
(t (vamp:make-application
81+
:func (vamp:func obj)
82+
:arguments (mapcar 'to-vampir-opt (vamp:arguments obj)))))))
8383

8484
(defmethod to-vampir-opt ((obj vamp:constant))
8585
obj)
8686

8787
(defmethod to-vampir-opt ((obj vamp:wire))
8888
obj)
8989

90-
(defmethod to-vampir-opt ((obj geb.vampir.spec:infix))
90+
(defmethod to-vampir-opt ((obj vamp:infix))
9191
(let* ((lhs (vamp:lhs obj))
9292
(rhs (vamp:rhs obj))
9393
(oplhs (to-vampir-opt lhs))

0 commit comments

Comments
 (0)