+ (case elt
+ (0 (when (not byte-compile-delete-errors)
+ (byte-compile-constant 0)
+ (byte-compile-out 'byte-diff 0)))
+ (+1 (byte-compile-out 'byte-sub1 0))
+ (-1 (byte-compile-out 'byte-add1 0))
+ (t
+ (byte-compile-form elt)
+ (byte-compile-out 'byte-diff 0))))))))
+
+(defun byte-compile-mult (form)
+ (let ((args (cdr form)))
+ (case (length args)
+ (0 (byte-compile-constant 1))
+ (1 (byte-compile-mult (append form '(1))))
+ (t (byte-compile-form (car args))
+ (dolist (elt (cdr args))
+ (case elt
+ (1 (when (not byte-compile-delete-errors)
+ (byte-compile-constant 1)
+ (byte-compile-out 'byte-mult 0)))
+ (-1 (byte-compile-out 'byte-negate 0))
+ (2 (byte-compile-out 'byte-dup 0)
+ (byte-compile-out 'byte-plus 0))
+ (t
+ (byte-compile-form elt)
+ (byte-compile-out 'byte-mult 0))))))))