From 30741cecef0dce972eb55e1d40331394e3db1e82 Mon Sep 17 00:00:00 2001 From: Charles Zhang Date: Tue, 11 Aug 2026 00:31:05 +0200 Subject: [PATCH] Have CTU:COMPILER-DERIVED-TYPE return the final dervied type. By making it an IR2 converter, we get the final type, not some intermediate type. --- tests/compiler-test-util.lisp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/tests/compiler-test-util.lisp b/tests/compiler-test-util.lisp index 2e925bbcb..40c1a5bfc 100644 --- a/tests/compiler-test-util.lisp +++ b/tests/compiler-test-util.lisp @@ -35,11 +35,16 @@ (cl:in-package :ctu) +;;; Report the type the compiler ended up with for X. (unless (fboundp 'compiler-derived-type) (defknown compiler-derived-type (t) (values t t) (flushable)) - (deftransform compiler-derived-type ((x) * * :node node) - (sb-c::delay-ir1-transform node :ir1-phases) - `(values ',(type-specifier (sb-c::lvar-type x)) t)) + (sb-c::defoptimizer (compiler-derived-type sb-c::ir2-convert) ((x) node block) + (let ((lvar (sb-c::node-lvar node))) + (sb-c::move-lvar-result + node block + (list (sb-c::emit-constant (type-specifier (sb-c::lvar-type x))) + (sb-c::emit-constant t)) + lvar))) (defun compiler-derived-type (x) (declare (ignore x)) (values t nil)))