summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/map.el
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2020-12-31 17:37:13 +0100
committerAndrea Corallo <akrl@sdf.org>2021-01-01 14:04:58 +0100
commit67c443adc1ef8a03d27c6172247e792421bb0e13 (patch)
tree60e5bc9dba7be94302b5a085f08b5852c4743559 /lisp/emacs-lisp/map.el
parente9f5fadb0ecb64148472f846a99a0d7e95daeaee (diff)
downloademacs-67c443adc1ef8a03d27c6172247e792421bb0e13.tar.gz
emacs-67c443adc1ef8a03d27c6172247e792421bb0e13.tar.bz2
emacs-67c443adc1ef8a03d27c6172247e792421bb0e13.zip
Introduce 'unreachable' LIMPLE operator
Introduce 'unreachable' as LIMPLE operater so we can handle correctly in the CFG functions throwing values or signaling errors. * src/comp.c (retrive_block): Better error diagnostic. (emit_limple_insn): Add `unreachable'. (compile_function): Fix block iteration. (syms_of_comp): Define 'Qunreachable'. * lisp/emacs-lisp/comp.el (comp-block): New variable. (comp-block-lap): Add `non-ret-insn' slot. (comp-branch-op-p): New predicate. (comp-limple-lock-keywords): Color `unreachable' as red. (comp-compute-edges): Add `unreachable'. (comp-fwprop-call): Store non returning function call. (comp-fwprop*): Update. (comp-clean-orphan-blocks, comp-rewrite-non-locals): New functions. (comp-fwprop): Call `comp-rewrite-non-locals'. * test/src/comp-tests.el (comp-tests-type-spec-tests): Add two tests. * test/src/comp-test-funcs.el (comp-test-non-local-1) (comp-test-non-local-2, comp-test-non-local-3) (comp-test-non-local-4): New functions.
Diffstat (limited to 'lisp/emacs-lisp/map.el')
0 files changed, 0 insertions, 0 deletions