diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2011-08-17 13:34:12 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2011-08-17 13:34:12 +0000 |
commit | 84cb73abe0f777521ee67cec2405c9593420d3da (patch) | |
tree | 132aaf0717d782d9d4e0bdb87eff14e55bd29b6d /cparser/StructAssign.ml | |
parent | 8c2d07d888779c2dbe610da15cac5bae39e17fd0 (diff) | |
download | compcert-84cb73abe0f777521ee67cec2405c9593420d3da.tar.gz compcert-84cb73abe0f777521ee67cec2405c9593420d3da.zip |
Factor out bind_lvalue
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1715 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cparser/StructAssign.ml')
-rw-r--r-- | cparser/StructAssign.ml | 19 |
1 files changed, 0 insertions, 19 deletions
diff --git a/cparser/StructAssign.ml b/cparser/StructAssign.ml index a9c5091d..5c989a3a 100644 --- a/cparser/StructAssign.ml +++ b/cparser/StructAssign.ml @@ -93,25 +93,6 @@ let transf_assign env lhs rhs = else [e_lhs; e_rhs; e_size] in {edesc = ECall(memcpy, args); etyp = TVoid[]} -(* Detect invariant l-values *) - -let rec invariant_lvalue env e = - match e.edesc with - | EVar _ -> true - | EUnop(Odot _, e1) -> invariant_lvalue env e1 - | _ -> false - -(* Bind a l-value to a temporary variable if it is not invariant. *) - -let bind_lvalue env e fn = - if invariant_lvalue env e then - fn e - else begin - let tmp = new_temp (TPtr(e.etyp, [])) in - ecomma (eassign tmp (addrof e)) - (fn {edesc = EUnop(Oderef, tmp); etyp = e.etyp}) - end - (* Transformation of expressions. *) type context = Val | Effects |