Index: /trunk/source/compiler/ARM/arm2.lisp
===================================================================
--- /trunk/source/compiler/ARM/arm2.lisp	(revision 14777)
+++ /trunk/source/compiler/ARM/arm2.lisp	(revision 14778)
@@ -6158,5 +6158,6 @@
 
 (defarm2 arm2-minus1 minus1 (seg vreg xfer form)
-  (arm2-unary-builtin seg vreg xfer '%negate form))
+  (or (acode-optimize-minus1 seg vreg xfer form *arm2-trust-declarations*)
+      (arm2-unary-builtin seg vreg xfer '%negate form)))
 
 (defarm2 arm2-%double-float-negate %double-float-negate (seg vreg xfer form)
Index: /trunk/source/compiler/nx2.lisp
===================================================================
--- /trunk/source/compiler/nx2.lisp	(revision 14777)
+++ /trunk/source/compiler/nx2.lisp	(revision 14778)
@@ -739,13 +739,20 @@
 (defun acode-optimize-minus1 (seg vreg xfer form trust-decls &optional (result-type 'number))
   (declare (ignorable result-type))
-  (cond ((acode-form-typep form 'double-float trust-decls)
-         (backend-use-operator (%nx1-operator %double-float-negate) seg vreg xfer form)
-         t)
-        ((acode-form-typep form 'single-float trust-decls)
-         (backend-use-operator (%nx1-operator %single-float-negate) seg vreg xfer form)
-         t)
-        ((acode-form-typep form *nx-target-fixnum-type* trust-decls)
-         (backend-use-operator (%nx1-operator %ineg) seg vreg xfer form)
-         t)))
+  (multiple-value-bind (val constp) (acode-constant-p form)
+    (cond ((and (and constp (ignore-errors (setq val (- val)))))
+           (backend-use-operator (if (typep val *nx-target-fixnum-type*)
+                                   (%nx1-operator fixnum)
+                                   (%nx1-operator immediate))
+                                 seg vreg xfer val)
+           t)
+          ((acode-form-typep form 'double-float trust-decls)
+           (backend-use-operator (%nx1-operator %double-float-negate) seg vreg xfer form)
+           t)
+          ((acode-form-typep form 'single-float trust-decls)
+           (backend-use-operator (%nx1-operator %single-float-negate) seg vreg xfer form)
+           t)
+          ((acode-form-typep form *nx-target-fixnum-type* trust-decls)
+           (backend-use-operator (%nx1-operator %ineg) seg vreg xfer form)
+           t))))
 
                 
