diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2012-11-12 13:42:22 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2012-11-12 13:42:22 +0000 |
commit | ce4951549999f403446415c135ad1403a16a15c3 (patch) | |
tree | cac9bbb2fea29fce331916b277c38ed8fe29e471 /cfrontend/Cshmgen.v | |
parent | dcb9f48f51cec5e864565862a700c27df2a1a7e6 (diff) |
Globalenvs: allocate one-byte block with permissions Nonempty for each
function definition, so that comparisons between function pointers
are correctly defined.
AST, Globalenvs, and many other files:
represent programs as a list of (function or variable) definitions
instead of two lists, one for functions and the other for variables.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2067 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cfrontend/Cshmgen.v')
-rw-r--r-- | cfrontend/Cshmgen.v | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/cfrontend/Cshmgen.v b/cfrontend/Cshmgen.v index c5e9b8d..a459297 100644 --- a/cfrontend/Cshmgen.v +++ b/cfrontend/Cshmgen.v @@ -546,8 +546,16 @@ with transl_lbl_stmt (tyret: type) (nbrk ncnt: nat) Definition prefix_var_name (id: ident) : errmsg := MSG "In local variable " :: CTX id :: MSG ": " :: nil. -Definition transl_vars (l: list (ident * type)) := - AST.map_partial prefix_var_name var_kind_of_type l. +Fixpoint transl_vars (l: list (ident * type)) : res (list (ident * var_kind)) := + match l with + | nil => OK nil + | (id, ty) :: l' => + match var_kind_of_type ty with + | Error msg => Error (MSG "In local variable " :: CTX id :: MSG ": " :: msg) + | OK vk => + do tl' <- transl_vars l'; OK ((id, vk) :: tl') + end + end. Definition transl_function (f: Clight.function) : res function := do tparams <- transl_vars (Clight.fn_params f); |