emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

feature/native-comp e6ab4e3 04/14: * Add a test targeting forward propag


From: Andrea Corallo
Subject: feature/native-comp e6ab4e3 04/14: * Add a test targeting forward propagation
Date: Thu, 9 Jul 2020 11:57:51 -0400 (EDT)

branch: feature/native-comp
commit e6ab4e3dfe2bfc6e935b4cfa7e8f686e5d926235
Author: Andrea Corallo <akrl@sdf.org>
Commit: Andrea Corallo <akrl@sdf.org>

    * 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 aefb2f0..332facb 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]