# HG changeset patch # User Stefan Monnier # Date 1048610040 0 # Node ID 2f19a8ed285b58839a5521d77a8a74e3c0230ba7 # Parent 77bee06b14c552ed75027f6b94e8dce484ae1a95 (byte-optimize-set): New. Turn `set' into `setq' when applicable. diff -r 77bee06b14c5 -r 2f19a8ed285b lisp/emacs-lisp/byte-opt.el --- a/lisp/emacs-lisp/byte-opt.el Tue Mar 25 16:30:15 2003 +0000 +++ b/lisp/emacs-lisp/byte-opt.el Tue Mar 25 16:34:00 2003 +0000 @@ -1168,6 +1168,18 @@ (if (equal '((quote xemacs)) (cdr-safe form)) nil form)) + +(put 'set 'byte-optimizer 'byte-optimize-set) +(defun byte-optimize-set (form) + (let ((var (car-safe (cdr-safe form)))) + (cond + ((and (eq (car-safe var) 'quote) (consp (cdr var))) + (list* 'setq (cadr var) (cddr form))) + ((and (eq (car-safe var) 'make-local-variable) + (eq (car-safe (setq var (car-safe (cdr var)))) 'quote) + (consp (cdr var))) + `(progn ,(cadr form) (setq ,(cadr var) ,@(cddr form)))) + (t form)))) ;;; enumerating those functions which need not be called if the returned ;;; value is not used. That is, something like