anchor.diff:         (not (expex-in-env? x))
          (global-variable? x)))
   
  -(defun expex-funinfo-env-add ()
  +(defun expex-funinfo-env-add-var ()
     (let s (expex-sym)
       (awhen *expex-funinfo*
         (funinfo-env-add ! s))
   	s))
   
  -;(defun expex-funinfo-env-add ()
  -;  (aif *expex-funinfo*
  -;      (funinfo-make-stackplace ! (expex-sym))
  -;  	  (expex-sym)))
  +(defun expex-funinfo-env-add-stack ()
  +  (aif *expex-funinfo*
  +      (funinfo-make-stackplace ! (expex-sym))
  +  	  (expex-sym)))
  +
  +(defun expex-stack-locals? (ex)
  +  (and *expex-funinfo* ; Is set if we're inside a function.
  +	   (transpiler-stack-locals? (expex-transpiler ex))))
  +
  +(defun expex-funinfo-env-add (ex)
  +  (if (expex-stack-locals? ex)
  +	  (expex-funinfo-env-add-stack)
  +	  (expex-funinfo-env-add-var)))
  +
  +(defun expex-local-decl (ex s)
  +  (unless (expex-stack-locals? ex)
  +	`((%var ,s))))
   
   ;;;; PREDICATES
   
  
positive.code: ;;;; CONFIGURATION
  
  (defstruct expex
    ; Callback to check if an object is a function.
    (function? (fn functionp (symbol-value _)))
  
  
negative.code:            (in? x. '%stack '%vec '%set-vec
  				   'vm-go 'vm-go-nil
  				   '%transpiler-native '%transpiler-string
  				   '%var '%quote
  				   '%no-expex))))
  
  ;; Check if an expression has a return value.
  