mescc: Tinycc support: ((unsigned char*)str)[0].
[mes.git] / module / language / c99 / compiler.mes
index d7359180dee9b5673c398a41e1697e9b05b375c5..c633ad362c9258c60726d42a4ddc77a804ca20b7 100644 (file)
 
         ;; <expr>[baz]
         ((array-ref ,index ,array)
-         (let ((info ((expr->accu* info) o)))
-           (append-text info (wrap-as (i386:mem->accu)))))
+         (let* ((info ((expr->accu* info) o))
+                (ptr (expr->pointer info array))
+                (size (if (= ptr 1) (expr->size info array)
+                          4)))
+           (append-text info (wrap-as (if (= size 1) (i386:byte-mem->accu)
+                                          (i386:mem->accu))))))
 
         ;; bar.f.i
         ((d-sel (ident ,field1) (d-sel (ident ,field0) (p-expr (ident ,struct0))))