diff options
author | Andrea Corallo <akrl@sdf.org> | 2020-12-27 21:33:07 +0100 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2020-12-27 21:50:34 +0100 |
commit | 42fb6de0b366622cd59006f69fbc13c5cf3a0714 (patch) | |
tree | 1aa87b079cccfd96b828b0ef089ddc513d08ed68 /lisp/emacs-lisp/comp.el | |
parent | 7d07a718416d6c24df0719483279c4278dce4acb (diff) | |
download | emacs-42fb6de0b366622cd59006f69fbc13c5cf3a0714.tar.gz emacs-42fb6de0b366622cd59006f69fbc13c5cf3a0714.tar.bz2 emacs-42fb6de0b366622cd59006f69fbc13c5cf3a0714.zip |
Add 1+ 1- integer range propagation support
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-one): New special var.
* lisp/emacs-lisp/comp.el (comp-fwprop-call): Propagate integer
ranges on +1 -1.
* test/src/comp-tests.el (comp-tests-type-spec-tests): Add two tests.
Diffstat (limited to 'lisp/emacs-lisp/comp.el')
-rw-r--r-- | lisp/emacs-lisp/comp.el | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 336ed39145d..6b06ac5840d 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -2651,7 +2651,9 @@ Fold the call in case." (comp-mvar-neg lval) (comp-cstr-neg cstr)))) (cl-case f (+ (comp-cstr-add lval args)) - (- (comp-cstr-sub lval args))))) + (- (comp-cstr-sub lval args)) + (1+ (comp-cstr-add lval `(,(car args) ,comp-cstr-one))) + (1- (comp-cstr-sub lval `(,(car args) ,comp-cstr-one)))))) (defun comp-fwprop-insn (insn) "Propagate within INSN." |