diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2011-04-14 09:15:17 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2011-04-14 09:15:17 +0000 |
commit | 12696ae9f6c34aaffc668711d96beda51a783832 (patch) | |
tree | 4c268d028ddb5ae75e3b9c1901a30a31bebf6465 /cparser/Cutil.ml | |
parent | 5a4bd6f2636df432383bb3144f91816742d2fa53 (diff) | |
download | compcert-12696ae9f6c34aaffc668711d96beda51a783832.tar.gz compcert-12696ae9f6c34aaffc668711d96beda51a783832.zip |
Revised handling of GCC attributes. Preliminary, untested support for __aligned__ attribute
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1634 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'cparser/Cutil.ml')
-rw-r--r-- | cparser/Cutil.ml | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/cparser/Cutil.ml b/cparser/Cutil.ml index bb540c70..7aac6592 100644 --- a/cparser/Cutil.ml +++ b/cparser/Cutil.ml @@ -63,6 +63,14 @@ let rec incl_attributes (al1: attributes) (al2: attributes) = else if a1 > a2 then incl_attributes al1 al2' else incl_attributes al1' al2' +let rec find_custom_attributes (names: string list) (al: attributes) = + match al with + | [] -> [] + | Attr(name, args) :: tl when List.mem name names -> + args :: find_custom_attributes names tl + | _ :: tl -> + find_custom_attributes names tl + (* Adding top-level attributes to a type. Doesn't need to unroll defns. *) (* Array types cannot carry attributes, so add them to the element type. *) @@ -96,7 +104,7 @@ let rec attributes_of_type env t = | TInt(ik, a) -> a | TFloat(fk, a) -> a | TPtr(ty, a) -> a - | TArray(ty, sz, a) -> a (* correct? *) + | TArray(ty, sz, a) -> add_attributes a (attributes_of_type env ty) | TFun(ty, params, vararg, a) -> a | TNamed(s, a) -> attributes_of_type env (unroll env t) | TStruct(s, a) -> a |