implemented alignas pragma (#12643)

* implemented alignas pragma

* fix bootstrap

* generate c++ compatible syntax for alignas

* Make it work.

* Multiple alignof expressions. Implement top level alignof.
This commit is contained in:
Arne Döring 2019-11-13 09:22:41 +01:00 • committed by cooldome
commit 0496a666e2
13 changed files with 153 additions and 19 deletions

View file

@ -156,6 +156,8 @@ proc computeObjectOffsetsFoldFunction(conf: ConfigRef; n: PNode, packed: bool, a
size = n.sym.typ.size.int
align = if packed: 1 else: n.sym.typ.align.int
accum.align(align)
if n.sym.alignment > 0:
accum.align(n.sym.alignment)
n.sym.offset = accum.offset
accum.inc(size)
else:
@ -183,6 +185,8 @@ proc computeUnionObjectOffsetsFoldFunction(conf: ConfigRef; n: PNode; accum: var
size = n.sym.typ.size.int
align = n.sym.typ.align.int
accum.align(align)
if n.sym.alignment > 0:
accum.align(n.sym.alignment)
n.sym.offset = accum.offset
accum.inc(size)
else: