summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbd <bdunahu@operationnull.com>2025-01-28 17:52:23 -0500
committerbd <bdunahu@operationnull.com>2025-01-28 17:52:23 -0500
commit5cea39649d613864f3e7a688cb2a7ecbde8bd6cd (patch)
tree9cfdeb42231f771b344fdf7b541d5f135eaf276f /src
parent467357ef13ea5d935d2e3aa5baaeef6317cd9590 (diff)
Simplified declaring new IR nodes in (backend ast ir)
Diffstat (limited to 'src')
-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))