Offsetof fixes (#11690)

* first fixes

* more tests and fixes

* code normalization
This commit is contained in:
Arne Döring 2019-07-09 09:07:45 +02:00 • committed by Andreas Rumpf
commit 11dad688fe
8 changed files with 241 additions and 81 deletions

View file

@ -2119,14 +2119,7 @@ proc semSizeof(c: PContext, n: PNode): PNode =
n.sons[1] = semExprWithType(c, n.sons[1], {efDetermineType})
#restoreOldStyleType(n.sons[1])
n.typ = getSysType(c.graph, n.info, tyInt)
let size = getSize(c.config, n[1].typ)
if size >= 0:
result = newIntNode(nkIntLit, size)
result.info = n.info
result.typ = n.typ
else:
result = n
result = foldSizeOf(c.config, n, n)
proc semMagic(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode =
# this is a hotspot in the compiler!
@ -2215,7 +2208,8 @@ proc semMagic(c: PContext, n: PNode, s: PSym, flags: TExprFlags): PNode =
result = setMs(n, s)
else:
result = c.graph.emptyNode
of mSizeOf: result = semSizeof(c, setMs(n, s))
of mSizeOf: result =
semSizeof(c, setMs(n, s))
else:
result = semDirectOp(c, n, flags)