From 712f3cbae6bfd3c6f6cc40d44f438aa0affcd371 Mon Sep 17 00:00:00 2001 From: xleroy Date: Tue, 18 Dec 2012 07:54:35 +0000 Subject: 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 --- cparser/Transform.ml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'cparser/Transform.ml') diff --git a/cparser/Transform.ml b/cparser/Transform.ml index 0e7357b8..3b6f10f6 100644 --- a/cparser/Transform.ml +++ b/cparser/Transform.ml @@ -166,6 +166,7 @@ let stmt trexpr env s = | Sreturn None -> s | Sreturn (Some e) -> {s with sdesc = Sreturn(Some(trexpr s.sloc env Val e))} + | Sasm _ -> s | Sblock _ | Sdecl _ -> assert false (* should not occur in unblocked code *) in stm s @@ -185,7 +186,7 @@ let program ?(fundef = fun env fd -> fd) ?(composite = fun env su id attr fl -> (attr, fl)) ?(typedef = fun env id ty -> ty) - ?(enum = fun env id members -> members) + ?(enum = fun env id attr members -> (attr, members)) ?(pragma = fun env s -> s) p = @@ -208,8 +209,10 @@ let program Env.add_composite env id (composite_info_def env su attr fl)) | Gtypedef(id, ty) -> (Gtypedef(id, typedef env id ty), Env.add_typedef env id ty) - | Genumdef(id, members) -> - (Genumdef(id, enum env id members), env) + | Genumdef(id, attr, members) -> + let (attr', members') = enum env id attr members in + (Genumdef(id, attr', members'), + Env.add_enum env id {ei_members = members; ei_attr = attr}) | Gpragma s -> (Gpragma(pragma env s), env) in -- cgit