summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/ast/ir.scm41
-rw-r--r--src/backend/tacky/traverse.scm6
2 files changed, 9 insertions, 38 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)
diff --git a/src/backend/tacky/traverse.scm b/src/backend/tacky/traverse.scm
index 9a1b7aa..aec0f23 100644
--- a/src/backend/tacky/traverse.scm
+++ b/src/backend/tacky/traverse.scm
@@ -31,9 +31,3 @@
(lambda ()
(set! count (1+ count))
(list 'tmp count))))
-
-(define (neg src dst)
- (list 'neg src dst))
-
-(define (not src dst)
- (list 'not src dst))