diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2012-12-18 07:54:35 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2012-12-18 07:54:35 +0000 |
commit | 712f3cbae6bfd3c6f6cc40d44f438aa0affcd371 (patch) | |
tree | 913762a241b5f97b3ef4df086ba6adaeb2ff45c4 /cparser/Rename.ml | |
parent | c629161139899e43a2fe7c5af59ca926cdab370e (diff) | |
download | compcert-712f3cbae6bfd3c6f6cc40d44f438aa0affcd371.tar.gz compcert-712f3cbae6bfd3c6f6cc40d44f438aa0affcd371.zip |
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.ml | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/cparser/Rename.ml b/cparser/Rename.ml index 034df245..59b7bd76 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) |