aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cparser/Cutil.ml2
-rw-r--r--cparser/Elab.ml3
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"; []