|
@@ -573,7 +573,7 @@ let rec type_inline ctx cf f ethis params tret config p ?(self_calling_closure=f
|
|
|
(* ---------------------------------------------------------------------- *)
|
|
|
(* LOOPS *)
|
|
|
|
|
|
-let rec optimize_for_loop ctx i e1 e2 p =
|
|
|
+let rec optimize_for_loop ctx (i,pi) e1 e2 p =
|
|
|
let t_void = ctx.t.tvoid in
|
|
|
let t_int = ctx.t.tint in
|
|
|
let lblock el = Some (mk (TBlock el) t_void p) in
|
|
@@ -591,7 +591,7 @@ let rec optimize_for_loop ctx i e1 e2 p =
|
|
|
) in
|
|
|
let iexpr = mk (TLocal index) t_int p in
|
|
|
let e2 = type_expr ctx e2 NoValue in
|
|
|
- let aget = mk (TVar (i,Some (f_get arr iexpr pt p))) t_void p in
|
|
|
+ let aget = mk (TVar (i,Some (f_get arr iexpr pt p))) t_void pi in
|
|
|
let incr = mk (TUnop (Increment,Prefix,iexpr)) t_int p in
|
|
|
let block = match e2.eexpr with
|
|
|
| TBlock el -> mk (TBlock (aget :: incr :: el)) t_void e2.epos
|
|
@@ -638,7 +638,7 @@ let rec optimize_for_loop ctx i e1 e2 p =
|
|
|
check e2;
|
|
|
let etmp = mk (TLocal tmp) t_int p in
|
|
|
let incr = mk (TUnop (Increment,Postfix,etmp)) t_int p in
|
|
|
- let init = mk (TVar (i,Some incr)) t_void p in
|
|
|
+ let init = mk (TVar (i,Some incr)) t_void pi in
|
|
|
let block = match e2.eexpr with
|
|
|
| TBlock el -> mk (TBlock (init :: el)) t_void e2.epos
|
|
|
| _ -> mk (TBlock [init;e2]) t_void p
|
|
@@ -715,7 +715,7 @@ let rec optimize_for_loop ctx i e1 e2 p =
|
|
|
let cell = gen_local ctx tcell in
|
|
|
let cexpr = mk (TLocal cell) tcell p in
|
|
|
let e2 = type_expr ctx e2 NoValue in
|
|
|
- let evar = mk (TVar (i,Some (mk (mk_field cexpr "elt") t p))) t_void p in
|
|
|
+ let evar = mk (TVar (i,Some (mk (mk_field cexpr "elt") t p))) t_void pi in
|
|
|
let enext = mk (TBinop (OpAssign,cexpr,mk (mk_field cexpr "next") tcell p)) tcell p in
|
|
|
let block = match e2.eexpr with
|
|
|
| TBlock el -> mk (TBlock (evar :: enext :: el)) t_void e2.epos
|