commit
92d1da407a
2 changed files with 10 additions and 7 deletions
|
|
@ -828,6 +828,9 @@ proc typeSectionFinalPass(c: PContext, n: PNode) =
|
||||||
getCurrOwner(), s.info)
|
getCurrOwner(), s.info)
|
||||||
|
|
||||||
proc semTypeSection(c: PContext, n: PNode): PNode =
|
proc semTypeSection(c: PContext, n: PNode): PNode =
|
||||||
|
## Processes a type section. This must be done in separate passes, in order
|
||||||
|
## to allow the type definitions in the section to reference each other
|
||||||
|
## without regard for the order of their definitions.
|
||||||
typeSectionLeftSidePass(c, n)
|
typeSectionLeftSidePass(c, n)
|
||||||
typeSectionRightSidePass(c, n)
|
typeSectionRightSidePass(c, n)
|
||||||
typeSectionFinalPass(c, n)
|
typeSectionFinalPass(c, n)
|
||||||
|
|
|
||||||
|
|
@ -1118,6 +1118,11 @@ proc typeAllowed(t: PType, kind: TSymKind): bool =
|
||||||
proc align(address, alignment: BiggestInt): BiggestInt =
|
proc align(address, alignment: BiggestInt): BiggestInt =
|
||||||
result = (address + (alignment - 1)) and not (alignment - 1)
|
result = (address + (alignment - 1)) and not (alignment - 1)
|
||||||
|
|
||||||
|
const
|
||||||
|
szNonConcreteType* = -3
|
||||||
|
szIllegalRecursion* = -2
|
||||||
|
szUnknownSize* = -1
|
||||||
|
|
||||||
proc computeSizeAux(typ: PType, a: var BiggestInt): BiggestInt
|
proc computeSizeAux(typ: PType, a: var BiggestInt): BiggestInt
|
||||||
proc computeRecSizeAux(n: PNode, a, currOffset: var BiggestInt): BiggestInt =
|
proc computeRecSizeAux(n: PNode, a, currOffset: var BiggestInt): BiggestInt =
|
||||||
var maxAlign, maxSize, b, res: BiggestInt
|
var maxAlign, maxSize, b, res: BiggestInt
|
||||||
|
|
@ -1152,13 +1157,8 @@ proc computeRecSizeAux(n: PNode, a, currOffset: var BiggestInt): BiggestInt =
|
||||||
result = computeSizeAux(n.sym.typ, a)
|
result = computeSizeAux(n.sym.typ, a)
|
||||||
n.sym.offset = int(currOffset)
|
n.sym.offset = int(currOffset)
|
||||||
else:
|
else:
|
||||||
internalError("computeRecSizeAux()")
|
|
||||||
a = 1
|
a = 1
|
||||||
result = - 1
|
result = szNonConcreteType
|
||||||
|
|
||||||
const
|
|
||||||
szIllegalRecursion* = -2
|
|
||||||
szUnknownSize* = -1
|
|
||||||
|
|
||||||
proc computeSizeAux(typ: PType, a: var BiggestInt): BiggestInt =
|
proc computeSizeAux(typ: PType, a: var BiggestInt): BiggestInt =
|
||||||
var res, maxAlign, length, currOffset: BiggestInt
|
var res, maxAlign, length, currOffset: BiggestInt
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue