diff --git a/src/cmp/cmptables.lsp b/src/cmp/cmptables.lsp index ea911f448..170862b12 100644 --- a/src/cmp/cmptables.lsp +++ b/src/cmp/cmptables.lsp @@ -17,42 +17,54 @@ (eval-when (:compile-toplevel :execute) (defconstant +all-c1-forms+ - '((LOCATION loc :pure :single-valued) + '(;; top-level forms + (ORDINARY c1form :pure) + (MAKE-FORM vv-loc value-c1form :side-effects) + (INIT-FORM vv-loc value-c1form :side-effects) + ;; both-level forms (different semantics) + (EXT:COMPILER-LET symbols values body) + (SI:FSET function-object vv-loc macro-p pprint-p lambda-form :side-effects) + (CL:LOAD-TIME-VALUE dest-loc value-c1form :pure :single-valued) + (CL:PROGN body :pure) + ;; sub-level forms + (LOCATION loc :pure :single-valued) (VAR var :single-valued) - (cl:SETQ var value-c1form :side-effects) - (cl:PSETQ var-list value-c1form-list :side-effects) - (cl:BLOCK blk-var progn-c1form :pure) - (cl:PROGN body :pure) - (cl:PROGV symbols values form :side-effects) - (cl:TAGBODY tag-var tag-body :pure) - (cl:RETURN-FROM blk-var nonlocal value :side-effects) - (cl:FUNCALL fun-value (arg-value*) :side-effects) + (CL:SETQ var value-c1form :side-effects) + (CL:PSETQ var-list value-c1form-list :side-effects) + (CL:BLOCK blk-var progn-c1form :pure) + + (CL:PROGV symbols values form :side-effects) + (CL:TAGBODY tag-var tag-body :pure) + (CL:RETURN-FROM blk-var nonlocal value :side-effects) + (CL:FUNCALL fun-value (arg-value*) :side-effects) (CALL-LOCAL obj-fun (arg-value*) :side-effects) (CALL-GLOBAL fun-name (arg-value*)) - (cl:CATCH catch-value body :side-effects) - (cl:UNWIND-PROTECT protected-c1form body :side-effects) - (cl:THROW catch-value output-value :side-effects) - (cl:GO tag-var nonlocal :side-effects) - (ffi:C-INLINE (arg-c1form*) + (CL:CATCH catch-value body :side-effects) + (CL:UNWIND-PROTECT protected-c1form body :side-effects) + (CL:THROW catch-value output-value :side-effects) + (CL:GO tag-var nonlocal :side-effects) + + (FFI:C-INLINE (arg-c1form*) (arg-type-symbol*) output-rep-type c-expression-string side-effects-p one-liner-p) - (ffi:C-PROGN variables forms) + (FFI:C-PROGN variables forms) + (LOCALS local-fun-list body labels-p :pure) - (cl:IF fmla-c1form true-c1form false-c1form :pure) + (CL:IF fmla-c1form true-c1form false-c1form :pure) (FMLA-NOT fmla-c1form :pure) (FMLA-AND * :pure) (FMLA-OR * :pure) - (cl:LAMBDA lambda-list doc body-c1form) - (cl:LET* vars-list var-init-c1form-list decl-body-c1form :pure) - (cl:VALUES values-c1form-list :pure) - (cl:MULTIPLE-VALUE-SETQ vars-list values-c1form-list :side-effects) - (cl:MULTIPLE-VALUE-BIND vars-list init-c1form body :pure) - (ext:COMPILER-LET symbols values body) - (cl:FUNCTION (GLOBAL/CLOSURE) lambda-form fun-object :single-valued) - (cl:RPLACD (dest-c1form value-c1form) :side-effects) + (CL:LAMBDA lambda-list doc body-c1form) + (CL:LET* vars-list var-init-c1form-list decl-body-c1form :pure) + (CL:VALUES values-c1form-list :pure) + (CL:MULTIPLE-VALUE-SETQ vars-list values-c1form-list :side-effects) + (CL:MULTIPLE-VALUE-BIND vars-list init-c1form body :pure) + + (CL:FUNCTION (GLOBAL/CLOSURE) lambda-form fun-object :single-valued) + (CL:RPLACD (dest-c1form value-c1form) :side-effects) (SI:STRUCTURE-REF struct-c1form type-name slot-index (:UNSAFE/NIL) :pure) (SI:STRUCTURE-SET struct-c1form type-name slot-index value-c1form :side-effects) @@ -60,12 +72,6 @@ (WITH-STACK body :side-effects) (STACK-PUSH-VALUES value-c1form push-statement-c1form :side-effects) - (ORDINARY c1form :pure) - (cl:LOAD-TIME-VALUE dest-loc value-c1form :pure :single-valued) - (SI:FSET function-object vv-loc macro-p pprint-p lambda-form - :side-effects) - (MAKE-FORM vv-loc value-c1form :side-effects) - (INIT-FORM vv-loc value-c1form :side-effects) (ext:COMPILER-TYPECASE var expressions) (ext:CHECKED-VALUE type value-c1form let-form))))