(define impc:ti:zone_cleanup
  (lambda (ast)
    `(let ((zone (llvm_peek_zone_stack))
           (hooks:<i64,i8*,i8*>* (cast (tref zone 4)))
           (hook:<i64,i8*,i8*>* (alloc))
           (f (lambda () ,@(cdr ast) void)))
       (tfill! hook 0 (cast f i8*) (cast hooks i8*))
       (tset! zone 4 (cast hook i8*))
       void)))