Ignore:
Timestamp:
Jan 19, 2011, 6:23:27 PM (9 years ago)
Author:
campbell
Message:

Port memory spaces changes to latest prototype compiler.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Deliverables/D2.3/8051-memoryspaces-branch/cparser/AddCasts.ml

    r453 r460  
    4040  | TFloat(k1, _), TFloat(k2, _) ->
    4141      float_rank k1 <= float_rank k2
    42   | TPtr(ty1, _), TPtr(ty2, _) -> is_void_type env ty2
     42  | TPtr(sp1, ty1, _), TPtr(sp2, ty2, _) when sp1 = sp2 -> is_void_type env ty2
    4343  | _, _ -> false
    4444  end
     
    5353  if cast_not_needed env e.etyp tto
    5454  then e
    55   else {edesc = ECast(tto, e); etyp = tto}
     55  else {edesc = ECast(tto, e); etyp = tto; espace = Any}
    5656
    5757(* Note: this pass applies only to simplified expressions
     
    7474        | Opreincr | Opredecr | Opostincr | Opostdecr ->
    7575            assert false (* not simplified *)
    76       in { edesc = desc; etyp = e.etyp }
     76      in { edesc = desc; etyp = e.etyp; espace = e.espace }
    7777  | EBinop(op, e1, e2, ty) ->
    7878      let e1' = add_expr env e1 in
     
    9898        | Oand_assign|Oor_assign|Oxor_assign|Oshl_assign|Oshr_assign ->
    9999            assert false (* not simplified *)
    100       in { edesc = desc; etyp = e.etyp }
     100      in { edesc = desc; etyp = e.etyp; espace = e.espace }
    101101  | EConditional(e1, e2, e3) ->
    102102      { edesc =
    103103          EConditional(add_expr env e1, add_expr env e2, add_expr env e3);
    104         etyp = e.etyp }
     104        etyp = e.etyp;
     105        espace = e.espace }
    105106  | ECast(ty, e1) ->
    106       { edesc = ECast(ty, add_expr env e1); etyp = e.etyp }
     107      { edesc = ECast(ty, add_expr env e1); etyp = e.etyp; espace = e.espace }
    107108  | ECall(e1, el) ->
    108109      assert false (* not simplified *)
     
    133134    match unroll env ty_fun with
    134135    | TFun(res, args, vararg, a) -> args
    135     | TPtr(ty, a) ->
     136    | TPtr(_, ty, a) ->
    136137        begin match unroll env ty with
    137138        | TFun(res, args, vararg, a) -> args
     
    147148let add_topexpr env loc e =
    148149  match e.edesc with
    149   | EBinop(Oassign, lhs, {edesc = ECall(e1, el); etyp = ty}, _) ->
     150  | EBinop(Oassign, lhs, {edesc = ECall(e1, el); etyp = ty; espace = space}, _) ->
    150151      let ecall =
    151152        {edesc = ECall(add_expr env e1, add_arguments env e1.etyp el);
    152          etyp = ty} in
     153         etyp = ty; espace = space} in
    153154      if cast_not_needed env ty lhs.etyp then
    154155        sassign loc (add_expr env lhs) ecall
     
    163164      let ecall =
    164165        {edesc = ECall(add_expr env e1, add_arguments env e1.etyp el);
    165          etyp = e.etyp} in
     166         etyp = e.etyp; espace = e.espace} in
    166167      {sdesc = Sdo ecall; sloc = loc}
    167168  | _ ->
     
    176177      let ty_elt =
    177178        match unroll env tto with
    178         | TArray(ty, _, _) -> ty | _ -> assert false in
     179        | TArray(_,ty, _, _) -> ty | _ -> assert false in
    179180      Init_array (List.map (add_init env ty_elt) il)
    180181  | Init_struct(id, fil) ->
Note: See TracChangeset for help on using the changeset viewer.