summaryrefslogtreecommitdiff
path: root/cparser/Parse.ml
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2011-08-18 09:24:23 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2011-08-18 09:24:23 +0000
commit62a07ee96d51c29bab9668d8c41bf5f8bdf9e23d (patch)
treea44ae71bef9021e42a91da1787e7e83e75d18cad /cparser/Parse.ml
parent84cb73abe0f777521ee67cec2405c9593420d3da (diff)
SimplVolatile: new pass to eliminate read-modify-write ops over volatiles
Elsewhere: refactoring, moving common code into Cutil and Transform (to be continued) git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1716 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cparser/Parse.ml')
-rw-r--r--cparser/Parse.ml8
1 files changed, 5 insertions, 3 deletions
diff --git a/cparser/Parse.ml b/cparser/Parse.ml
index abef83c..dcd01e9 100644
--- a/cparser/Parse.ml
+++ b/cparser/Parse.ml
@@ -21,13 +21,14 @@ let transform_program t p =
let run_pass pass flag p = if CharSet.mem flag t then pass p else p in
Rename.program
(run_pass (AddCasts.program ~all:(CharSet.mem 'C' t)) 'c'
- (run_pass (SimplExpr.program ~volatile:(CharSet.mem 'v' t)) 'e'
+ (run_pass (SimplExpr.program ~volatile:(CharSet.mem 'V' t)) 'e'
+ (run_pass SimplVolatile.program 'v'
(run_pass StructAssign.program 'S'
(run_pass StructByValue.program 's'
(run_pass PackedStructs.program 'p'
(run_pass Bitfields.program 'f'
(run_pass Unblock.program 'b'
- p)))))))
+ p))))))))
let parse_transformations s =
let t = ref CharSet.empty in
@@ -39,7 +40,8 @@ let parse_transformations s =
| 'C' -> set "ecC"
| 's' -> set "s"
| 'S' -> set "bsS"
- | 'v' -> set "ev"
+ | 'v' -> set "v"
+ | 'V' -> set "eV"
| 'f' -> set "bf"
| 'p' -> set "bp"
| _ -> ())