diff options
-rw-r--r-- | cparser/Cutil.ml | 2 | ||||
-rw-r--r-- | cparser/Elab.ml | 3 |
2 files changed, 3 insertions, 2 deletions
diff --git a/cparser/Cutil.ml b/cparser/Cutil.ml index 1c9f747e..8b6d5e32 100644 --- a/cparser/Cutil.ml +++ b/cparser/Cutil.ml @@ -264,6 +264,8 @@ let alignas_attribute al = let rec alignas_attr accu = function | [] -> accu | AAlignas n :: al -> alignas_attr (max n accu) al + | Attr(("aligned" | "__aligned__"), [AInt n]) :: al -> + alignas_attr (max (Int64.to_int n) accu) al | a :: al -> alignas_attr accu al in alignas_attr 0 al diff --git a/cparser/Elab.ml b/cparser/Elab.ml index 257bc621..1f2c588f 100644 --- a/cparser/Elab.ml +++ b/cparser/Elab.ml @@ -511,8 +511,7 @@ let enter_gcc_attr loc a = match a with | Attr(("aligned"|"__aligned__"), args) -> begin match args with - | [AInt n] -> - if check_alignment loc n then [AAlignas (Int64.to_int n)] else [] + | [AInt n] -> if check_alignment loc n then [a] else [] | [_] -> error loc "requested alignment is not an integer constant"; [] | [] -> [] (* Use default alignment, like gcc does *) | _ -> error loc "'aligned' attribute takes no more than 1 argument"; [] |