Index: /trunk/source/compiler/nx2.lisp
===================================================================
--- /trunk/source/compiler/nx2.lisp	(revision 14892)
+++ /trunk/source/compiler/nx2.lisp	(revision 14893)
@@ -300,7 +300,7 @@
 
 (defun acode-constant-fold-binop (seg vreg xfer x y function)
-  (multiple-value-bind (x-p const-x) (acode-constant-p x)
+  (multiple-value-bind (const-x x-p) (acode-constant-p x)
     (when x-p
-      (multiple-value-bind (y-p const-y) (acode-constant-p y)
+      (multiple-value-bind (const-y y-p) (acode-constant-p y)
         (when y-p
           (let* ((result (ignore-errors (funcall function const-x const-y))))
@@ -624,4 +624,5 @@
                  t)
                 ((and (eql (logcount f1) 1)
+                      (> f1 0)
                       (acode-form-typep num2 *nx-target-fixnum-type* trust-decls))
                  (backend-use-operator (%nx1-operator ash)
@@ -639,5 +640,7 @@
                  (backend-apply-acode num1 seg vreg xfer)
                  t)
-                ((and (eql (logcount f2) 1) (acode-form-typep num1 *nx-target-fixnum-type* trust-decls))
+                ((and (eql (logcount f2) 1)
+                      (> f2 0)
+                      (acode-form-typep num1 *nx-target-fixnum-type* trust-decls))
                  (backend-use-operator (%nx1-operator ash)
                                        seg
