summaryrefslogtreecommitdiff
path: root/cparser/Rename.ml
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-12-18 07:54:35 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2012-12-18 07:54:35 +0000
commit712f3cbae6bfd3c6f6cc40d44f438aa0affcd371 (patch)
tree913762a241b5f97b3ef4df086ba6adaeb2ff45c4 /cparser/Rename.ml
parentc629161139899e43a2fe7c5af59ca926cdab370e (diff)
Support for inline assembly (asm statements).
cparser: add primitive support for enum types. bitfield emulation: for bitfields with enum type, choose signed/unsigned as appropriate git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2074 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cparser/Rename.ml')
-rw-r--r--cparser/Rename.ml10
1 files changed, 6 insertions, 4 deletions
diff --git a/cparser/Rename.ml b/cparser/Rename.ml
index 034df24..59b7bd7 100644
--- a/cparser/Rename.ml
+++ b/cparser/Rename.ml
@@ -96,6 +96,7 @@ let rec typ env = function
| TNamed(id, a) -> TNamed(ident env id, a)
| TStruct(id, a) -> TStruct(ident env id, a)
| TUnion(id, a) -> TUnion(ident env id, a)
+ | TEnum(id, a) -> TEnum(ident env id, a)
| ty -> ty
and param env (id, ty) =
@@ -168,6 +169,7 @@ and stmt_desc env = function
| Sreturn a -> Sreturn (optexp env a)
| Sblock sl -> let (sl', _) = mmap stmt_or_decl env sl in Sblock sl'
| Sdecl d -> assert false
+ | Sasm txt -> Sasm txt
and stmt_or_decl env s =
match s.sdesc with
@@ -195,9 +197,9 @@ let fundef env f =
fd_body = stmt env2 f.fd_body },
env0 )
-let enum env (id, opte) =
+let enum env (id, v, opte) =
let (id', env') = rename env id in
- ((id', optexp env' opte), env')
+ ((id', v, optexp env' opte), env')
let rec globdecl env g =
let (desc', env') = globdecl_desc env g.gdesc in
@@ -219,10 +221,10 @@ and globdecl_desc env = function
| Gtypedef(id, ty) ->
let (id', env') = rename env id in
(Gtypedef(id', typ env' ty), env')
- | Genumdef(id, members) ->
+ | Genumdef(id, attr, members) ->
let (id', env') = rename env id in
let (members', env'') = mmap enum env' members in
- (Genumdef(id', members'), env'')
+ (Genumdef(id', attr, members'), env'')
| Gpragma s ->
(Gpragma s, env)