diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2011-11-26 15:40:57 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2011-11-26 15:40:57 +0000 |
commit | 60b6624ae2b28ebe9fb30c2aa6115e4d5c1ab436 (patch) | |
tree | a78b0a79576773ead96a8d39902ad3a19b20ed2d /cparser/Bitfields.ml | |
parent | 015c64c64a5a547dcef81a75a589eeaf034654cd (diff) | |
download | compcert-kvx-60b6624ae2b28ebe9fb30c2aa6115e4d5c1ab436.tar.gz compcert-kvx-60b6624ae2b28ebe9fb30c2aa6115e4d5c1ab436.zip |
cparser/*: refactoring of the expansion of read-modify-write operators
cparser/PackedStructs: treat r-m-w operations over byte-swapped fields
cparser/PackedStructs: allow static initialization of packed structs
test/regression: more packedstruct tests
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1738 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cparser/Bitfields.ml')
-rw-r--r-- | cparser/Bitfields.ml | 24 |
1 files changed, 1 insertions, 23 deletions
diff --git a/cparser/Bitfields.ml b/cparser/Bitfields.ml index d16f91f0..c1b83cb7 100644 --- a/cparser/Bitfields.ml +++ b/cparser/Bitfields.ml @@ -201,28 +201,6 @@ let bitfield_assign bf carrier newval = {edesc = EBinop(Oor, oldval_masked, newval_masked, TInt(IUInt,[])); etyp = TInt(IUInt,[])} -(* Transformation of operators *) - -let op_for_incr_decr = function - | Opreincr -> Oadd - | Opredecr -> Osub - | Opostincr -> Oadd - | Opostdecr -> Osub - | _ -> assert false - -let op_for_assignop = function - | Oadd_assign -> Oadd - | Osub_assign -> Osub - | Omul_assign -> Omul - | Odiv_assign -> Odiv - | Omod_assign -> Omod - | Oand_assign -> Oand - | Oor_assign -> Oor - | Oxor_assign -> Oxor - | Oshl_assign -> Oshl - | Oshr_assign -> Oshr - | _ -> assert false - (* Check whether a field access (e.f or e->f) is a bitfield access. If so, return carrier expression (e and *e, respectively) and bitfield_info *) @@ -356,7 +334,7 @@ let transf_expr env ctx e = bind_lvalue env (texp Val e1) (fun base -> let carrier = {edesc = EUnop(Odot bf.bf_carrier, base); etyp = bf.bf_carrier_typ} in - let temp = new_temp tyfield in + let temp = mk_temp env tyfield in let tyres = unary_conversion env tyfield in let settemp = eassign temp (bitfield_extract bf carrier) in let rhs = |