summaryrefslogtreecommitdiff
path: root/cparser/Parse.ml
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-02-04 19:14:14 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-02-04 19:14:14 +0000
commit25b9b003178002360d666919f2e49e7f5f4a36e2 (patch)
treed5f7fb317f34f3a7ac9383c21b0eb143317c30f8 /cparser/Parse.ml
parent145b32ec504541e98f73b2c87ff2d8181b5e7968 (diff)
Merge of the "volatile" branch:
- native treatment of volatile accesses in CompCert C's semantics - translation of volatile accesses to built-ins in SimplExpr - native treatment of struct assignment and passing struct parameter by value - only passing struct result by value remains emulated - in cparser, remove emulations that are no longer used - added C99's type _Bool and used it to express || and && more efficiently. git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1814 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cparser/Parse.ml')
-rw-r--r--cparser/Parse.ml14
1 files changed, 2 insertions, 12 deletions
diff --git a/cparser/Parse.ml b/cparser/Parse.ml
index dcd01e9..2c467a7 100644
--- a/cparser/Parse.ml
+++ b/cparser/Parse.ml
@@ -20,28 +20,18 @@ module CharSet = Set.Make(struct type t = char let compare = compare end)
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 SimplVolatile.program 'v'
- (run_pass StructAssign.program 'S'
- (run_pass StructByValue.program 's'
+ (run_pass StructReturn.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
let set s = String.iter (fun c -> t := CharSet.add c !t) s in
String.iter
(function 'b' -> set "b"
- | 'e' -> set "e"
- | 'c' -> set "ec"
- | 'C' -> set "ecC"
| 's' -> set "s"
- | 'S' -> set "bsS"
- | 'v' -> set "v"
- | 'V' -> set "eV"
| 'f' -> set "bf"
| 'p' -> set "bp"
| _ -> ())