diff options
author | Xavier Leroy <xavier.leroy@college-de-france.fr> | 2021-08-22 13:29:36 +0200 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@college-de-france.fr> | 2021-08-22 13:29:36 +0200 |
commit | d2595e3afb8c38a3391a66c3fc3f7a92fff9eff4 (patch) | |
tree | f3c8fba9ffffee5924dadd803fcebdc3520c9361 /cfrontend/PrintCsyntax.ml | |
parent | d97caa16d15b0faca8386a060ec2bfaedad3cdab (diff) | |
parent | 47fae389c800034e002c9f8a398e9adc79a14b81 (diff) | |
download | compcert-kvx-d2595e3afb8c38a3391a66c3fc3f7a92fff9eff4.tar.gz compcert-kvx-d2595e3afb8c38a3391a66c3fc3f7a92fff9eff4.zip |
Merge branch 'bitfields' (#400)
Diffstat (limited to 'cfrontend/PrintCsyntax.ml')
-rw-r--r-- | cfrontend/PrintCsyntax.ml | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/cfrontend/PrintCsyntax.ml b/cfrontend/PrintCsyntax.ml index 75c85d60..16cdfc41 100644 --- a/cfrontend/PrintCsyntax.ml +++ b/cfrontend/PrintCsyntax.ml @@ -204,7 +204,7 @@ let rec expr p (prec, e) = then fprintf p "@[<hov 2>(" else fprintf p "@[<hov 2>"; begin match e with - | Eloc(b, ofs, _) -> + | Eloc(b, ofs, _, _) -> fprintf p "<loc%a>" !print_pointer_hook (b, ofs) | Evar(id, _) -> fprintf p "%s" (extern_atom id) @@ -534,13 +534,18 @@ let struct_or_union = function Struct -> "struct" | Union -> "union" let declare_composite p (Composite(id, su, m, a)) = fprintf p "%s %s;@ " (struct_or_union su) (extern_atom id) +let print_member p = function + | Member_plain(id, ty) -> + fprintf p "@ %s;" (name_cdecl (extern_atom id) ty) + | Member_bitfield(id, sz, sg, attr, w, _is_padding) -> + fprintf p "@ %s : %s;" + (name_cdecl (extern_atom id) (Tint(sz, sg, attr))) + (Z.to_string w) + let define_composite p (Composite(id, su, m, a)) = fprintf p "@[<v 2>%s %s%s {" (struct_or_union su) (extern_atom id) (attributes a); - List.iter - (fun (fid, fty) -> - fprintf p "@ %s;" (name_cdecl (extern_atom fid) fty)) - m; + List.iter (print_member p) m; fprintf p "@;<0 -2>};@]@ @ " let print_program p prog = |