diff --git a/compiler/ir1tran.lisp b/compiler/ir1tran.lisp
index f544ec56334f01473edb1a4e3c736e568416cb3e..add30c087057ac63399cc1ba54b9deb75487563f 100644
--- a/compiler/ir1tran.lisp
+++ b/compiler/ir1tran.lisp
@@ -7,7 +7,7 @@
 ;;; Scott Fahlman or slisp-group@cs.cmu.edu.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ir1tran.lisp,v 1.65 1992/02/14 23:47:11 wlott Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ir1tran.lisp,v 1.66 1992/02/24 01:25:35 wlott Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -3366,15 +3366,23 @@
 	(newval (eval value)))
     (unless (symbolp name)
       (compiler-error "Constant name is not a symbol: ~S." name))
-
-    (ecase (info variable kind name)
-      (:constant
-       (unless (equalp newval (info variable constant-value name))
-	 (compiler-warning "Redefining constant ~S as:~%  ~S"
-			   name newval)))
-      (:special
-       (compiler-warning "Redefining special ~S to be a constant." name))
-      (:global))
+    (when (eq name t)
+      (compiler-error "Can't change T."))
+    (when (eq name nil)
+      (compiler-error "Nilhil ex nilhil (Can't change NIL)."))
+    (when (keywordp name)
+      (compiler-error "Can't change the value of keywords."))
+
+    (let ((kind (info variable kind name)))
+      (case kind
+	(:constant
+	 (unless (equalp newval (info variable constant-value name))
+	   (compiler-warning "Redefining constant ~S as:~%  ~S"
+			     name newval)))
+	(:global)
+	(t
+	 (compiler-warning "Redefining ~(~A~) ~S to be a constant."
+			   kind name))))
 
     (setf (info variable kind name) :constant)
     (setf (info variable where-from name) :defined)