aboutsummaryrefslogtreecommitdiffstats
path: root/cparser/Transform.ml
diff options
context:
space:
mode:
authorxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-04-09 12:25:03 +0000
committerxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-04-09 12:25:03 +0000
commitd966e01ea011fa66d5a5a7f9ffce4344e415981a (patch)
tree487a86c759777b54a9e9dda72c602348c9270920 /cparser/Transform.ml
parentb66aaf2d1b90ff51f54bcd2a344a6ab50ac6fe86 (diff)
downloadcompcert-kvx-d966e01ea011fa66d5a5a7f9ffce4344e415981a.tar.gz
compcert-kvx-d966e01ea011fa66d5a5a7f9ffce4344e415981a.zip
Bug fix: infinite loop in cparser/ on bit field of size 32 bits.
Algorithmic efficiency: in cparser/, precompute sizeof and alignof of composites. Code cleanup: introduced Cutil.composite_info_{def,decl} git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1312 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cparser/Transform.ml')
-rw-r--r--cparser/Transform.ml7
1 files changed, 3 insertions, 4 deletions
diff --git a/cparser/Transform.ml b/cparser/Transform.ml
index 637e9a8e..b7f57f39 100644
--- a/cparser/Transform.ml
+++ b/cparser/Transform.ml
@@ -64,12 +64,11 @@ let program
(Gfundef(fundef env f),
Env.add_ident env f.fd_name f.fd_storage (fundef_typ f))
| Gcompositedecl(su, id) ->
- let ci = {ci_kind = su; ci_incomplete = true; ci_members = []} in
- (Gcompositedecl(su, id), Env.add_composite env id ci)
+ (Gcompositedecl(su, id),
+ Env.add_composite env id (composite_info_decl env su))
| Gcompositedef(su, id, fl) ->
- let ci = {ci_kind = su; ci_incomplete = false; ci_members = fl} in
(Gcompositedef(su, id, composite env su id fl),
- Env.add_composite env id ci)
+ Env.add_composite env id (composite_info_def env su fl))
| Gtypedef(id, ty) ->
(Gtypedef(id, typedef env id ty), Env.add_typedef env id ty)
| Genumdef _ as gd -> (gd, env)