From e6ab4e3dfe2bfc6e935b4cfa7e8f686e5d926235 Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Sun, 5 Jul 2020 11:11:11 +0100 Subject: [PATCH] * Add a test targeting forward propagation * test/src/comp-tests.el (comp-tests-fw-prop-checker-1): New function. (comp-tests-fw-prop): New test. --- test/src/comp-tests.el | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/test/src/comp-tests.el b/test/src/comp-tests.el index aefb2f0601a..332facb4cf9 100644 --- a/test/src/comp-tests.el +++ b/test/src/comp-tests.el @@ -640,4 +640,26 @@ CHECKER should always return nil to have a pass." (should (subr-native-elisp-p (symbol-function #'comp-tests-tco-f))) (should (= (comp-tests-tco-f 1 0 10) 55)))) +(defun comp-tests-fw-prop-checker-1 (_) + "Check that inside `comp-tests-fw-prop-f' `concat' and `length' are folded." + (comp-tests-make-insn-checker + 'comp-tests-fw-prop-1-f + (lambda (insn) + (or (comp-tests-mentioned-p 'concat insn) + (comp-tests-mentioned-p 'length insn))))) + +(ert-deftest comp-tests-fw-prop () + "Some tests for forward propagation." + (let ((comp-speed 2) + (comp-post-pass-hooks '((comp-final comp-tests-fw-prop-checker-1)))) + (eval '(defun comp-tests-fw-prop-1-f () + (let* ((a "xxx") + (b "yyy") + (c (concat a b))) ; <= has to optimize + (length c))) ; <= has to optimize + t) + (load (native-compile #'comp-tests-fw-prop-1-f)) + (should (subr-native-elisp-p (symbol-function #'comp-tests-fw-prop-1-f))) + (should (= (comp-tests-fw-prop-1-f) 6)))) + ;;; comp-tests.el ends here -- 2.39.5