diff --git a/ansi-tests/gclload2.lsp b/ansi-tests/gclload2.lsp
index d0381c43d523a7f0d6d488ecfde0ebc7c5e148d1..c0da9fc49a8ea67385f8b20ab2240691a780b97b 100644
--- a/ansi-tests/gclload2.lsp
+++ b/ansi-tests/gclload2.lsp
@@ -31,6 +31,7 @@
 (load "macrolet.lsp")
 (load "progv.lsp")
 (load "tagbody.lsp")
+(load "unwind-protect.lsp")
 
 
 ;;; Tests of conses
diff --git a/ansi-tests/tagbody.lsp b/ansi-tests/tagbody.lsp
index d6c0bee2f87a560c30032fe5478a056697be3bef..89e1738b01440a0e4c15bc2d230f3b545a56a3af 100644
--- a/ansi-tests/tagbody.lsp
+++ b/ansi-tests/tagbody.lsp
@@ -113,10 +113,3 @@
      a)
     result)
   20)
-
-
-
-
-
-    
-
diff --git a/ansi-tests/unwind-protect.lsp b/ansi-tests/unwind-protect.lsp
new file mode 100644
index 0000000000000000000000000000000000000000..03d6fd3e3330301380b04ec9bb07aa41c83d606e
--- /dev/null
+++ b/ansi-tests/unwind-protect.lsp
@@ -0,0 +1,90 @@
+;-*- Mode:     Lisp -*-
+;;;; Author:   Paul Dietz
+;;;; Created:  Sat Oct 12 14:41:16 2002
+;;;; Contains: Tests of UNWIND-PROTECT
+
+(in-package :cl-test)
+
+(deftest unwind-protect.1
+  (let ((x nil))
+    (unwind-protect
+	(push 1 x)
+      (incf (car x))))
+  (2))
+
+(deftest unwind-protect.2
+  (let ((x nil))
+    (block foo
+      (unwind-protect
+	  (progn (push 1 x) (return-from foo x))
+	(incf (car x)))))
+  (2))
+
+(deftest unwind-protect.3
+  (let ((x nil))
+    (tagbody
+      (unwind-protect
+	  (progn (push 1 x) (go done))
+	(incf (car x)))
+      done)
+    x)
+  (2))
+
+(deftest unwind-protect.4
+  (let ((x nil))
+    (catch 'done
+      (unwind-protect
+	  (progn (push 1 x) (throw 'done x))
+	(incf (car x)))))
+  (2))
+
+(deftest unwind-protect.5
+  (let ((x nil))
+    (ignore-errors
+      (unwind-protect
+	  (progn (push 1 x) (error "Boo!"))
+	(incf (car x))))
+    x)
+  (2))
+
+(deftest unwind-protect.6
+  (let ((x nil))
+    (block done
+      (flet ((%f () (return-from done nil)))
+	(unwind-protect (%f)
+	  (push 'a x))))
+    x)
+  (a))
+
+(deftest unwind-protect.7
+  (let ((x nil))
+    (block done
+      (flet ((%f () (return-from done nil)))
+	(unwind-protect
+	    (unwind-protect (%f)
+	      (push 'b x))
+	  (push 'a x))))
+    x)
+  (a b))
+
+(deftest unwind-protect.8
+  (let ((x nil))
+    (block done
+      (unwind-protect
+	  (flet ((%f () (return-from done nil)))
+	    (unwind-protect
+		(unwind-protect (%f)
+		  (push 'b x))
+	      (push 'a x)))
+	(push 'c x)))
+    x)
+  (c a b))
+
+(deftest unwind-protect.9
+  (let ((x nil))
+    (handler-case
+      (flet ((%f () (error 'type-error :datum 'foo :expected-type nil)))
+	(unwind-protect (handler-case (%f))
+	  (push 'a x)))
+      (type-error () x)))
+  (a))