This came up at random while compiling code that's existed forever but under optimization settings which we apparently have never used.
The following is as small as I could reduce it to, and strangely the "this-works" function seems to avoid the bug, as I discovered while attempting to eliminate the second binding in the m-v-bind in the code that croaks.

;; mini-fail.lisp
(defstruct thing (%bits 0 :type fixnum) infos)

(declaim (inline logic-bit))
(defun logic-bit (b)
   (if (typep b 'fixnum)
       b
       (ecase b
         ((t) 1)
         ((nil) 2))))

(defun this-works (obj)
  (let* ((value t) (infos (thing-infos obj)))
    (declare (ignore infos))
    (setf (thing-%bits obj) (dpb (logic-bit value) (byte 2 0) (thing-%bits obj))))
  obj)

(defun this-croaks (obj)
  (multiple-value-bind (value infos)
      (values t (thing-infos obj))
    (declare (ignore infos))
    (setf (thing-%bits obj) (dpb (logic-bit value) (byte 2 0) (thing-%bits obj))))
  obj)
;;

% ~/sbcl/pristine/bin/sbcl --no-userinit
This is SBCL 1.1.12.18.master.1-c5099c2-dirty, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software...

* (compile-file "/tmp/mini-fail")
; compiling file "/private/tmp/mini-fail.lisp" (written 05 DEC 2013 10:42:02 PM):
; compiling (DEFSTRUCT THING ...)
; compiling (DECLAIM (INLINE LOGIC-BIT))
; compiling (DEFUN LOGIC-BIT ...)
; compiling (DEFUN THIS-WORKS ...)
; compiling (DEFUN THIS-CROAKS ...)
debugger invoked on a TYPE-ERROR in thread
#<THREAD "main thread" RUNNING {1002ACB783}>:
  The value T is not of type INTEGER.
restarts (invokable by number or by possibly-abbreviated name):
  0: [ABORT] Exit debugger, returning to top level.

((FLET SB-C::DO-1-USE :IN SB-C::CUT-TO-WIDTH) #<SB-C::REF :%SOURCE-NAME B :LEAF #<SB-KERNEL:CONSTANT :VALUE T {100342AF43}> {1003429483}>)

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1002ACB783}>
0: ((FLET SB-C::DO-1-USE :IN SB-C::CUT-TO-WIDTH) #<SB-C::REF :%SOURCE-NAME B :LEAF #<SB-KERNEL:CONSTANT :VALUE T {100342AF43}> {1003429483}>)
1: ((LABELS SB-C::CUT-LVAR :IN SB-C::CUT-TO-WIDTH) #<SB-C::LVAR 1 {100343BD73}> :HEAD T)
2: (SB-C::CUT-TO-WIDTH #<SB-C::LVAR 1 {100343BD73}> :TAGGED 63 T) [tl,external]
3: (SB-C::LOGAND-OPTIMIZER-OPTIMIZER #<SB-C::COMBINATION :FUN #<SB-C::REF  :LEAF #<SB-C::GLOBAL-VAR :%SOURCE-NAME LOGAND :TYPE #1=#<SB-KERNEL:FUN-TYPE (FUNCTION (&REST INTEGER) (VALUES INTEGER &OPTIONAL))> :DEFINED-TYPE #\
1# :WHERE-FROM :DECLARED :KIND :GLOBAL-FUNCTION {100343B833}> {100343B993}> :ARGS ((#<SB-C::REF :%SOURCE-NAME B :LEAF #<SB-KERNEL:CONSTANT :VALUE T {100342AF43}> {1003429483}> #<SB-C::REF  :LEAF #<SB-KERNEL:CONSTANT :VALU\
E 2 {100342BDE3}> {100342BE63}> #<SB-C::REF  :LEAF #<SB-KERNEL:CONSTANT :VALUE 1 {1003423743}> {100342B3A3}>) #<SB-C::REF :%SOURCE-NAME SB-C::MASK :LEAF #<SB-KERNEL:CONSTANT :VALUE 31 {1003447DF3}> {100343BCC3}>) {100343B\
A13}>)
4: (SB-C::IR1-OPTIMIZE-COMBINATION #<SB-C::COMBINATION :FUN #<SB-C::REF  :LEAF #<SB-C::GLOBAL-VAR :%SOURCE-NAME LOGAND :TYPE #1=#<SB-KERNEL:FUN-TYPE (FUNCTION (&REST INTEGER) (VALUES INTEGER &OPTIONAL))> :DEFINED-TYPE #1#\
 :WHERE-FROM :DECLARED :KIND :GLOBAL-FUNCTION {100343B833}> {100343B993}> :ARGS ((#<SB-C::REF :%SOURCE-NAME B :LEAF #<SB-KERNEL:CONSTANT :VALUE T {100342AF43}> {1003429483}> #<SB-C::REF  :LEAF #<SB-KERNEL:CONSTANT :VALUE \
2 {100342BDE3}> {100342BE63}> #<SB-C::REF  :LEAF #<SB-KERNEL:CONSTANT :VALUE 1 {1003423743}> {100342B3A3}>) #<SB-C::REF :%SOURCE-NAME SB-C::MASK :LEAF #<SB-KERNEL:CONSTANT :VALUE 31 {1003447DF3}> {100343BCC3}>) {100343BA1\
3}>)
5: (SB-C::IR1-OPTIMIZE-BLOCK #<SB-C::CBLOCK NIL :START c2 {1003436F13}>)
6: (SB-C::IR1-OPTIMIZE #<SB-C:COMPONENT :NAME LOGIC-BIT {10034355B3}> NIL)
7: (SB-C::IR1-OPTIMIZE-UNTIL-DONE #<SB-C:COMPONENT :NAME LOGIC-BIT {10034355B3}>)
8: (SB-C::IR1-PHASES #<SB-C:COMPONENT :NAME LOGIC-BIT {10034355B3}>)