fixes and changes the recently introduced 'alignas' to be 'align' (#12666)
* fixes and changes the recently introduced 'alignas' to be 'align' * more improvements
This commit is contained in:
parent
9c46526cfa
commit
58f3e07b1a
9 changed files with 50 additions and 44 deletions
|
|
@ -1,7 +1,7 @@
|
|||
discard """
|
||||
ccodeCheck: "\\i @'alignas(128) NI mylocal1' .*"
|
||||
ccodeCheck: "\\i @'NIM_ALIGN(128) NI mylocal1' .*"
|
||||
target: "c cpp"
|
||||
output: "alignas ok"
|
||||
output: "align ok"
|
||||
"""
|
||||
|
||||
# This is for Azure. The keyword ``alignof`` only exists in ``c++11``
|
||||
|
|
@ -11,14 +11,14 @@ when defined(cpp) and not defined(windows):
|
|||
|
||||
import globalalignas
|
||||
|
||||
var toplevel1 {.alignas: 32.} : int32
|
||||
var toplevel2 {.alignas: 32.} : int32
|
||||
var toplevel3 {.alignas: 32.} : int32
|
||||
var toplevel1 {.align: 32.} : int32
|
||||
var toplevel2 {.align: 32.} : int32
|
||||
var toplevel3 {.align: 32.} : int32
|
||||
|
||||
proc foobar() =
|
||||
var myvar1 {.global, alignas(64).}: int = 123
|
||||
var myvar2 {.global, alignas(64).}: int = 123
|
||||
var myvar3 {.global, alignas(64).}: int = 123
|
||||
var myvar1 {.global, align(64).}: int = 123
|
||||
var myvar2 {.global, align(64).}: int = 123
|
||||
var myvar3 {.global, align(64).}: int = 123
|
||||
|
||||
doAssert (cast[uint](addr(myglobal1)) and 127) == 0
|
||||
doAssert (cast[uint](addr(myglobal2)) and 127) == 0
|
||||
|
|
@ -32,15 +32,15 @@ proc foobar() =
|
|||
doAssert (cast[uint](addr(toplevel2)) and 31) == 0
|
||||
doAssert (cast[uint](addr(toplevel3)) and 31) == 0
|
||||
|
||||
# test multiple alignas expressions
|
||||
var mylocal1 {.alignas(0), alignas(128), alignas(32).}: int = 123
|
||||
var mylocal2 {.alignas(128), alignas(0), alignas(32).}: int = 123
|
||||
var mylocal3 {.alignas(0), alignas(32), alignas(128).}: int = 123
|
||||
# test multiple align expressions
|
||||
var mylocal1 {.align(0), align(128), align(32).}: int = 123
|
||||
var mylocal2 {.align(128), align(0), align(32).}: int = 123
|
||||
var mylocal3 {.align(0), align(32), align(128).}: int = 123
|
||||
|
||||
doAssert (cast[uint](addr(mylocal1)) and 127) == 0
|
||||
doAssert (cast[uint](addr(mylocal2)) and 127) == 0
|
||||
doAssert (cast[uint](addr(mylocal3)) and 127) == 0
|
||||
|
||||
echo "alignas ok"
|
||||
echo "align ok"
|
||||
|
||||
foobar()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue