diff --git a/compiler/ir1tran.lisp b/compiler/ir1tran.lisp
index 4d589a2a7795e3c5bf7d97b733bdbc0bb07c15b5..9c3e92057cda857320babe6d2df8ea217141d3aa 100644
--- a/compiler/ir1tran.lisp
+++ b/compiler/ir1tran.lisp
@@ -14,7 +14,8 @@
 ;;;
 (in-package 'c)
 
-(export '(*compile-time-define-macros* *converting-for-interpreter*))
+(export '(*compile-time-define-macros* *converting-for-interpreter*
+	  *suppress-values-declaration*))
 
 (in-package 'ext)
 (export '(ignorable truly-the maybe-inline *derive-function-types*))
@@ -839,6 +840,10 @@
   (undefined-value))
 
 
+(defvar *suppress-values-declaration* nil
+  "If true, processing of the VALUES declaration is inhibited.")
+
+
 ;;; PROCESS-1-DECLARATION  --  Internal
 ;;;
 ;;;    Process a single declaration spec, agumenting the specified LEXENV
@@ -872,11 +877,13 @@
     (type
      (process-type-declaration (cdr spec) res vars))
     (values
-     (let ((types (cdr spec)))
-       (do-the-stuff (if (null (cdr types))
-			 (car types)
-			 `(values ,@types))
-		     cont res 'values)))
+     (if *suppress-values-declaration*
+	 res
+	 (let ((types (cdr spec)))
+	   (do-the-stuff (if (null (cdr types))
+			     (car types)
+			     `(values ,@types))
+			 cont res 'values))))
     (t
      (let ((what (first spec)))
        (cond ((member what type-specifier-symbols)