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/SimplExpr.ml

    r453 r460  
    9393  let eboolvalof e =
    9494    { edesc = EBinop(One, e, intconst 0L IInt, TInt(IInt, []));
    95       etyp = TInt(IInt, []) } in
     95      etyp = TInt(IInt, []);
     96      espace = Any } in
    9697
    9798  let sseq s1 s2 = Cutil.sseq loc s1 s2 in
    9899
    99100  let sassign e1 e2 =
    100     { sdesc = Sdo {edesc = EBinop(Oassign, e1, e2, e1.etyp); etyp = e1.etyp};
     101    { sdesc = Sdo {edesc = EBinop(Oassign, e1, e2, e1.etyp); etyp = e1.etyp; espace = e1.espace};
    101102      sloc = loc } in
    102103
     
    150151        | Ominus | Oplus | Olognot | Onot | Oderef | Oarrow _ ->
    151152            let (s1, e1') = simpl e1 RHS in
    152             finish act s1 {edesc = EUnop(op, e1'); etyp = e.etyp}
     153            finish act s1 {edesc = EUnop(op, e1'); etyp = e.etyp; espace = e.espace}
    153154
    154155        | Oaddrof ->
    155156            let (s1, e1') = simpl e1 LHS in
    156             finish act s1 {edesc = EUnop(op, e1'); etyp = e.etyp}
     157            finish act s1 {edesc = EUnop(op, e1'); etyp = e.etyp; espace = e.espace}
    157158
    158159        | Odot _ ->
    159160            let (s1, e1') = simpl e1 (if act = LHS then LHS else RHS) in
    160             finish act s1 {edesc = EUnop(op, e1'); etyp = e.etyp}
     161            finish act s1 {edesc = EUnop(op, e1'); etyp = e.etyp; espace = e.espace}
    161162
    162163        | Opreincr | Opredecr ->
     
    166167            let ty = unary_conversion env e.etyp in
    167168            let e3 =
    168               {edesc = EBinop(op', e2', intconst 1L IInt, ty); etyp = ty} in
     169              {edesc = EBinop(op', e2', intconst 1L IInt, ty); etyp = ty; espace = Any} in
    169170            begin match act with
    170171            | Drop ->
     
    185186                let (s2, e2') = lhs_to_rhs e1' in
    186187                let e3 =
    187                   {edesc = EBinop(op', e2', intconst 1L IInt, ty); etyp = ty} in
     188                  {edesc = EBinop(op', e2', intconst 1L IInt, ty); etyp = ty; espace = Any} in
    188189                (sseq s1 (sseq s2 (sassign e1' e3)), voidconst)
    189190            | _ ->
    190191                let tmp = new_temp e.etyp in
    191192                let e3 =
    192                   {edesc = EBinop(op', tmp, intconst 1L IInt, ty); etyp = ty} in
     193                  {edesc = EBinop(op', tmp, intconst 1L IInt, ty); etyp = ty; espace = Any} in
    193194                finish act (sseq s1 (sseq (sassign tmp e1') (sassign e1' e3)))
    194195                       tmp
     
    206207            let (s2, e2') = simpl e2 RHS in
    207208            finish act (sseq s1 s2)
    208                        {edesc = EBinop(op, e1', e2', ty); etyp = e.etyp}
     209                       {edesc = EBinop(op, e1', e2', ty); etyp = e.etyp; espace = Any}
    209210
    210211        | Oassign ->
     
    240241              | _ -> assert false in
    241242            let e3 =
    242               { edesc = EBinop(op', e11', e2', ty); etyp = ty } in
     243              { edesc = EBinop(op', e11', e2', ty); etyp = ty; espace = Any } in
    243244            begin match act with
    244245            | Drop ->
     
    260261            if is_simpl_expr e2 then begin
    261262              finish act s1
    262                      {edesc = EBinop(Ologand, e1', e2, ty); etyp = e.etyp}
     263                     {edesc = EBinop(Ologand, e1', e2, ty); etyp = e.etyp; espace = e.espace}
    263264            end else begin
    264265              match act with
     
    285286            if is_simpl_expr e2 then begin
    286287              finish act s1
    287                      {edesc = EBinop(Ologor, e1', e2, ty); etyp = e.etyp}
     288                     {edesc = EBinop(Ologor, e1', e2, ty); etyp = e.etyp; espace = e.espace}
    288289            end else begin
    289290              match act with
     
    311312        let (s1, e1') = simpl e1 RHS in
    312313        if is_simpl_expr e2 && is_simpl_expr e3 then begin
    313           finish act s1 {edesc = EConditional(e1', e2, e3); etyp = e.etyp}
     314          finish act s1 {edesc = EConditional(e1', e2, e3); etyp = e.etyp; espace = e.espace}
    314315        end else begin
    315316          match act with
     
    337338        end else begin
    338339          let (s1, e1') = simpl e1 RHS in
    339           finish act s1 {edesc = ECast(ty, e1'); etyp = e.etyp}
     340          finish act s1 {edesc = ECast(ty, e1'); etyp = e.etyp; espace = e.espace}
    340341        end
    341342
     
    343344        let (s1, e1') = simpl e1 RHS in
    344345        let (s2, el') = simpl_list el in
    345         let e2 = { edesc = ECall(e1', el'); etyp = e.etyp } in
     346        let e2 = { edesc = ECall(e1', el'); etyp = e.etyp; espace = e.espace } in
    346347        begin match act with
    347348        | Drop ->
     
    482483        let s_init =
    483484          {sdesc = Sdo {edesc = EBinop(Oassign, tmp, intconst 1L IInt, tmp.etyp);
    484                         etyp = tmp.etyp};
     485                        etyp = tmp.etyp; espace = tmp.espace};
    485486           sloc = s.sloc} in
    486487        {sdesc = Sfor(s_init, tmp, s', simpl_stmt s1); sloc = s.sloc}
Note: See TracChangeset for help on using the changeset viewer.