diff --git a/test/script-support.lisp b/test/script-support.lisp
index de9f46bbc3169f9166bde040b5a3bbfda75fb092..48792cbb81bf89044a2d32c26a0b58bdec171ee0 100644
--- a/test/script-support.lisp
+++ b/test/script-support.lisp
@@ -33,9 +33,9 @@ Some constraints:
 
 (in-package :asdf-test)
 
-(declaim (optimize (speed 2) (safety 3) #-(or allegro gcl genera) (debug 3)
+(declaim (optimize (speed 2) (safety #-gcl 3 #+gcl 0) #-(or allegro gcl genera) (debug 3)
                    #+(or cmu scl) (c::brevity 2)))
-(proclaim '(optimize (speed 2) (safety 3) #-(or allegro gcl genera) (debug 3)
+(proclaim '(optimize (speed 2) (safety #-gcl 3 #+gcl 0) #-(or allegro gcl genera) (debug 3)
                      #+(or cmu scl) (c::brevity 2)))
 
 (defvar *trace-symbols*
diff --git a/test/test-run-program.script b/test/test-run-program.script
index 48064fd73903cbdbdb069fdc9a50919559a28036..444dbb65483007d353e2ba37931bcafdd4e40c24 100644
--- a/test/test-run-program.script
+++ b/test/test-run-program.script
@@ -1,5 +1,5 @@
 ;; -*- Lisp -*-
-(declaim (optimize (debug 3) (safety 3)))
+(declaim (optimize (debug 3) (safety #-gcl 3 #+gcl 0)))
 
 ;; On Windows, normalize away CRLF into jut the unixy LF.
 (defun dewindowize (x)
diff --git a/uiop/common-lisp.lisp b/uiop/common-lisp.lisp
index 96a17f34462f364ec6a6fb83d4a9134347f7b7f8..ac0939c4033882920cfb5e8a3e168a20987e2154 100644
--- a/uiop/common-lisp.lisp
+++ b/uiop/common-lisp.lisp
@@ -172,7 +172,7 @@ FROB them, that is to say, remove them if FROB is NIL,
 replace by FROB if FROB is a STRING, or if FROB is a FUNCTION,
 call FROB with the match and a function that emits a string in the output.
 Return a string made of the parts not omitted or emitted by FROB."
-    (declare (optimize (speed 0) (safety 3) (debug 3)))
+    (declare (optimize (speed 0) (safety #-gcl 3 #+gcl 0) (debug 3)))
     (let ((length (length string)) (stream nil))
       (labels ((emit-string (x &optional (start 0) (end (length x)))
                  (when (< start end)
diff --git a/uiop/pathname.lisp b/uiop/pathname.lisp
index 062b33b0df144869c4e56e137fadae1950a8ae50..2dfa8c162cb9ced0fe5d0ae68f673d95b804c361 100644
--- a/uiop/pathname.lisp
+++ b/uiop/pathname.lisp
@@ -102,8 +102,8 @@ by the underlying implementation's MAKE-PATHNAME and other primitives"
   ;; See CLHS make-pathname and 19.2.2.2.3.
   ;; This will be :unspecific if supported, or NIL if not.
   (defparameter *unspecific-pathname-type*
-    #+(or abcl allegro clozure cmu gcl genera lispworks mkcl sbcl scl xcl) :unspecific
-    #+(or clisp ecl #|These haven't been tested:|# cormanlisp mcl) nil
+    #+(or abcl allegro clozure cmu genera lispworks mkcl sbcl scl xcl) :unspecific
+    #+(or clisp ecl gcl #|These haven't been tested:|# cormanlisp mcl) nil
     "Unspecific type component to use with the underlying implementation's MAKE-PATHNAME")
 
   (defun make-pathname* (&rest keys &key (directory nil #+gcl2.6 directoryp)