summaryrefslogtreecommitdiff
path: root/cparser/Cutil.ml
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2011-04-14 09:15:17 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2011-04-14 09:15:17 +0000
commit12696ae9f6c34aaffc668711d96beda51a783832 (patch)
tree4c268d028ddb5ae75e3b9c1901a30a31bebf6465 /cparser/Cutil.ml
parent5a4bd6f2636df432383bb3144f91816742d2fa53 (diff)
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.ml10
1 files changed, 9 insertions, 1 deletions
diff --git a/cparser/Cutil.ml b/cparser/Cutil.ml
index bb540c7..7aac659 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