summaryrefslogtreecommitdiff
path: root/src/backend/ast/ir.scm
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/ast/ir.scm')
-rw-r--r--src/backend/ast/ir.scm41
1 files changed, 9 insertions, 32 deletions
diff --git a/src/backend/ast/ir.scm b/src/backend/ast/ir.scm
index 102739c..e4c1713 100644
--- a/src/backend/ast/ir.scm
+++ b/src/backend/ast/ir.scm
@@ -16,35 +16,12 @@
;;;
;;; Code:
-(define (ir-node type . args)
- (cons type args))
-
-(define (prog func)
- (ir-node 'prog func))
-
-(define (srout label instrs)
- (ir-node 'srout label instrs))
-
-(define (neg dst)
- (ir-node 'neg dst))
-
-(define (not dst)
- (ir-node 'not dst))
-
-(define (mov src dst)
- (ir-node 'mov src dst))
-
-(define (stack val)
- (ir-node 'stack val))
-
-(define (reg val)
- (ir-node 'reg val))
-
-(define (imm val)
- (ir-node 'imm val))
-
-(define (tmp num)
- (ir-node 'tmp num))
-
-(define (ret)
- (ir-node 'ret))
+(define-syntax def-ir-nodes
+ (syntax-rules ()
+ ((_ names ...)
+ (begin
+ (define (names . args)
+ (cons 'names args)) ...))))
+
+(def-ir-nodes
+ prog srout neg not mov stack reg imm tmp ret)