mescc: Lshift support non-fixed shift value.
[mes.git] / module / language / c99 / compiler.mes
index 51d24870d8ec16ec43cd5c73b775ce1f8cd7616f..719ec5e7b9d44e3180cf09e607b6b7dd5606797f 100644 (file)
                           (list (lambda (f g ta t d)
                                   (i386:accu-base)))))))        
 
-        ((lshift ,a (p-expr (fixed ,value)))
+        ((bitwise-or ,a ,b)
          (let* ((empty (clone info #:text '()))
                 (accu ((expr->accu empty) a))
-                (value (cstring->number value)))
+                (base ((expr->base empty) b)))
            (clone info #:text
                   (append text
                           (.text accu)
+                          (.text base)
+                          (list (lambda (f g ta t d)
+                                  (i386:accu-or-base)))))))
+
+        ((lshift ,a ,b)
+         (let* ((empty (clone info #:text '()))
+                (accu ((expr->accu empty) a))
+                (base ((expr->base empty) b)))
+           (clone info #:text
+                  (append text
+                          (.text accu)
+                          (.text base)
                           (list (lambda (f g ta t d)
-                                  (i386:accu-shl value)))))))
+                                  (i386:accu<<base)))))))
 
         ((div ,a ,b)
          (let* ((empty (clone info #:text '()))