mescc: Refactor ret.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 19 Mar 2017 09:27:18 +0000 (10:27 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 19 Mar 2017 09:27:18 +0000 (10:27 +0100)
* module/mes/libc-i386.mes (i386:ret): Refactor.
* module/language/c99/compiler.mes (ast->info): Use it.

module/language/c99/compiler.mes
module/mes/libc-i386.mes

index 50424a86f5758a3155a770941a9044dba7468859..d3293e37605f121b797addec36087899527ddc1a 100644 (file)
@@ -1697,7 +1697,7 @@ _)))))
         ((return ,expr)
          (let ((accu ((expr->accu info) expr)))
            (clone accu #:text
-                  (append (.text accu) (list (i386:ret (lambda _ '())))))))
+                  (append (.text accu) (list (lambda (f g ta t d) (i386:ret)))))))
 
         ;; int i;
         ((decl (decl-spec-list (type-spec (fixed-type ,type))) (init-declr-list (init-declr (ident ,name))))
index 6bfe7b439f90acf6abd99d69a7e0301af6ce0d2a..8fa4adb90d2eefe594a40d4628cae01c791f420e 100644 (file)
 (define (i386:push-base)
   '(#x52))                              ; push %eax
 
-(define (i386:ret . rest)
-  (lambda (f g ta t d)
-    `(
-      ,@(cond ((null? rest) '())
-              ((number? (car rest))
-               `(#xb8                     ; mov    $<>,%eaxx
-                 ,@(int->bv32 (car rest))))
-              ((pair? (car rest)) (car rest))
-              ((procedure? (car rest))
-               ((car rest) f g ta t d)))
-    #xc9                                ; leave
-    #xc3                                ; ret
-    )))
+(define (i386:ret)
+  '(#xc9                                ; leave
+    #xc3))                              ; ret
 
 (define (i386:accu->base)
   '(#x89 #xc2))                         ; mov    %eax,%edx