Basic constructor macro for vl-alias structures.
(make-vl-alias [:lhs <lhs>] [:rhs <rhs>] [:atts <atts>] [:loc <loc>])
This is the usual way to construct vl-alias structures. It simply conses together a structure with the specified fields.
This macro generates a new vl-alias structure from scratch. See also change-vl-alias, which can "change" an existing structure, instead.
This is an ordinary
Macro:
(defmacro make-vl-alias (&rest args) (std::make-aggregate 'vl-alias args '((:lhs) (:rhs) (:atts) (:loc)) 'make-vl-alias nil))
Function:
(defun vl-alias (lhs rhs atts loc) (declare (xargs :guard (and (vl-expr-p lhs) (vl-expr-p rhs) (vl-atts-p atts) (vl-location-p loc)))) (declare (xargs :guard t)) (let ((__function__ 'vl-alias)) (declare (ignorable __function__)) (b* ((lhs (mbe :logic (vl-expr-fix lhs) :exec lhs)) (rhs (mbe :logic (vl-expr-fix rhs) :exec rhs)) (atts (mbe :logic (vl-atts-fix atts) :exec atts)) (loc (mbe :logic (vl-location-fix loc) :exec loc))) (cons :vl-alias (std::prod-cons (std::prod-cons lhs rhs) (std::prod-cons atts loc))))))