diff --git a/compiler/srctran.lisp b/compiler/srctran.lisp
index 94bb4de4a6e9bf8282bb4ae8f6469280c71f6b2b..bbb69f9b20eadd5f14a740a2f88ae00b4f59853e 100644
--- a/compiler/srctran.lisp
+++ b/compiler/srctran.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman (FAHLMAN@CMUC). 
 ;;; **********************************************************************
 ;;;
-;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.13 1990/09/24 18:09:36 wlott Exp $
+;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/srctran.lisp,v 1.14 1990/09/25 10:22:43 wlott Exp $
 ;;;
 ;;;    This file contains macro-like source transformations which convert
 ;;; uses of certain functions into the canonical form desired within the
@@ -144,7 +144,6 @@
       (values nil t)
       `(truncate ,x 1)))
 
-(def-source-transform logeqv-two-arg (x y) `(lognot (logxor ,x ,y)))
 (def-source-transform lognand (x y) `(lognot (logand ,x ,y)))
 (def-source-transform lognor (x y) `(lognot (logior ,x ,y)))
 (def-source-transform logandc1 (x y) `(logand (lognot ,x) ,y))
@@ -1291,8 +1290,11 @@
 (def-source-transform logior (&rest args) (source-transform-transitive 'logior args 0))
 (def-source-transform logxor (&rest args) (source-transform-transitive 'logxor args 0))
 (def-source-transform logand (&rest args) (source-transform-transitive 'logand args -1))
+
 (def-source-transform logeqv (&rest args)
-  (source-transform-transitive 'logeqv args -1 'logeqv-two-arg))
+  (if (evenp (length args))
+      `(lognot (logxor ,@args))
+      `(logxor ,@args)))
 
 ;;; Note: we can't use source-transform-transitive for GCD and LCM because when
 ;;; they are given one argument, they return it's absolute value.