Comments (5)
!nim c
import std/macros
type
Algebra* = enum
BN254_Snarks
BLS12_381
Fp*[Name: static Algebra] = object
limbs*: array[4, uint64]
QuadraticExt*[F] = object
## Quadratic Extension field
coords*: array[2, F]
CubicExt*[F] = object
## Cubic Extension field
coords*: array[3, F]
ExtensionField*[F] = QuadraticExt[F] or CubicExt[F]
Fp2*[Name: static Algebra] =
QuadraticExt[Fp[Name]]
Fp4*[Name: static Algebra] =
QuadraticExt[Fp2[Name]]
Fp6*[Name: static Algebra] =
CubicExt[Fp2[Name]]
Fp12*[Name: static Algebra] =
CubicExt[Fp4[Name]]
# QuadraticExt[Fp6[Name]]
template Name*(E: type ExtensionField): Algebra =
E.F.Name
const BLS12_381_Order = [uint64 0x1, 0x2, 0x3, 0x4]
const BLS12_381_Modulus = [uint64 0x5, 0x6, 0x7, 0x8]
{.experimental: "dynamicBindSym".}
macro baseFieldModulus*(Name: static Algebra): untyped =
result = bindSym($Name & "_Modulus")
macro scalarFieldModulus*(Name: static Algebra): untyped =
result = bindSym($Name & "_Order")
type FieldKind* = enum
kBaseField
kScalarField
template getBigInt*(Name: static Algebra, kind: static FieldKind): untyped =
when kind == kBaseField:
Name.baseFieldModulus().typeof()
else:
Name.scalarFieldModulus().typeof()
type BenchMultiexpContext*[GT] = object
elems: seq[GT]
exponents: seq[getBigInt(GT.Name, kScalarField)]
proc createBenchMultiExpContext*(GT: typedesc, inputSizes: openArray[int]): BenchMultiexpContext[GT] =
discard
proc main() =
let ctx = createBenchMultiExpContext(Fp12[BLS12_381], [2, 4, 8, 16])
main()
from nim.
🐧 Linux bisect by @juancarlospaco (collaborator)
devel 👎 FAIL
Output
Error: Command failed: nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(47, 39) Error: cannot instantiate: 'ExtensionField[F]'; Maybe generic arguments are missing?
assertions.nim(34) raiseAssert
Error: unhandled exception: errGenerated [AssertionDefect]
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-07-18T00:50:23
- Finished
2024-07-18T00:50:24
- Duration
AST
nnkStmtList.newTree(
nnkImportStmt.newTree(
nnkInfix.newTree(
newIdentNode("/"),
newIdentNode("std"),
newIdentNode("macros")
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Algebra")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("BN254_Snarks"),
newIdentNode("BLS12_381")
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("limbs")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(4),
newIdentNode("uint64")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("QuadraticExt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("coords")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(2),
newIdentNode("F")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("CubicExt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("coords")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(3),
newIdentNode("F")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("ExtensionField")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkInfix.newTree(
newIdentNode("or"),
nnkBracketExpr.newTree(
newIdentNode("QuadraticExt"),
newIdentNode("F")
),
nnkBracketExpr.newTree(
newIdentNode("CubicExt"),
newIdentNode("F")
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp2")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkBracketExpr.newTree(
newIdentNode("QuadraticExt"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("Name")
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp4")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkBracketExpr.newTree(
newIdentNode("QuadraticExt"),
nnkBracketExpr.newTree(
newIdentNode("Fp2"),
newIdentNode("Name")
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp6")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkBracketExpr.newTree(
newIdentNode("CubicExt"),
nnkBracketExpr.newTree(
newIdentNode("Fp2"),
newIdentNode("Name")
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp12")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkBracketExpr.newTree(
newIdentNode("CubicExt"),
nnkBracketExpr.newTree(
newIdentNode("Fp4"),
newIdentNode("Name")
)
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Name")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("Algebra"),
nnkIdentDefs.newTree(
newIdentNode("E"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("ExtensionField")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("E"),
newIdentNode("F")
),
newIdentNode("Name")
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("BLS12_381_Order"),
newEmptyNode(),
nnkBracket.newTree(
nnkCommand.newTree(
newIdentNode("uint64"),
newLit(1)
),
newLit(2),
newLit(3),
newLit(4)
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("BLS12_381_Modulus"),
newEmptyNode(),
nnkBracket.newTree(
nnkCommand.newTree(
newIdentNode("uint64"),
newLit(5)
),
newLit(6),
newLit(7),
newLit(8)
)
)
),
nnkPragma.newTree(
nnkExprColonExpr.newTree(
newIdentNode("experimental"),
newLit("dynamicBindSym")
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("baseFieldModulus")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
newIdentNode("result"),
nnkCall.newTree(
newIdentNode("bindSym"),
nnkInfix.newTree(
newIdentNode("&"),
nnkPrefix.newTree(
newIdentNode("$"),
newIdentNode("Name")
),
newLit("_Modulus")
)
)
)
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("scalarFieldModulus")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
newIdentNode("result"),
nnkCall.newTree(
newIdentNode("bindSym"),
nnkInfix.newTree(
newIdentNode("&"),
nnkPrefix.newTree(
newIdentNode("$"),
newIdentNode("Name")
),
newLit("_Order")
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FieldKind")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("kBaseField"),
newIdentNode("kScalarField")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getBigInt")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("kind"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("FieldKind")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkWhenStmt.newTree(
nnkElifBranch.newTree(
nnkInfix.newTree(
newIdentNode("=="),
newIdentNode("kind"),
newIdentNode("kBaseField")
),
nnkStmtList.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("Name"),
newIdentNode("baseFieldModulus")
)
),
newIdentNode("typeof")
)
)
)
),
nnkElse.newTree(
nnkStmtList.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("Name"),
newIdentNode("scalarFieldModulus")
)
),
newIdentNode("typeof")
)
)
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("BenchMultiexpContext")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("GT"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("elems"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("GT")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("exponents"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
nnkCall.newTree(
newIdentNode("getBigInt"),
nnkDotExpr.newTree(
newIdentNode("GT"),
newIdentNode("Name")
),
newIdentNode("kScalarField")
)
),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("createBenchMultiExpContext")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
nnkBracketExpr.newTree(
newIdentNode("BenchMultiexpContext"),
newIdentNode("GT")
),
nnkIdentDefs.newTree(
newIdentNode("GT"),
newIdentNode("typedesc"),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("inputSizes"),
nnkBracketExpr.newTree(
newIdentNode("openArray"),
newIdentNode("int")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkProcDef.newTree(
newIdentNode("main"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("ctx"),
newEmptyNode(),
nnkCall.newTree(
newIdentNode("createBenchMultiExpContext"),
nnkBracketExpr.newTree(
newIdentNode("Fp12"),
newIdentNode("BLS12_381")
),
nnkBracket.newTree(
newLit(2),
newLit(4),
newLit(8),
newLit(16)
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("main")
)
)
stable 👎 FAIL
Output
Error: Command failed: nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim(47, 39) Error: cannot instantiate: 'ExtensionField[F]'; Maybe generic arguments are missing?
assertions.nim(34) raiseAssert
Error: unhandled exception: options.nim(682, 5) `false` errGenerated [AssertionDefect]
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-07-18T00:50:27
- Finished
2024-07-18T00:50:28
- Duration
AST
nnkStmtList.newTree(
nnkImportStmt.newTree(
nnkInfix.newTree(
newIdentNode("/"),
newIdentNode("std"),
newIdentNode("macros")
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Algebra")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("BN254_Snarks"),
newIdentNode("BLS12_381")
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("limbs")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(4),
newIdentNode("uint64")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("QuadraticExt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("coords")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(2),
newIdentNode("F")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("CubicExt")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("coords")
),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(3),
newIdentNode("F")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("ExtensionField")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("F"),
newEmptyNode(),
newEmptyNode()
)
),
nnkInfix.newTree(
newIdentNode("or"),
nnkBracketExpr.newTree(
newIdentNode("QuadraticExt"),
newIdentNode("F")
),
nnkBracketExpr.newTree(
newIdentNode("CubicExt"),
newIdentNode("F")
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp2")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkBracketExpr.newTree(
newIdentNode("QuadraticExt"),
nnkBracketExpr.newTree(
newIdentNode("Fp"),
newIdentNode("Name")
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp4")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkBracketExpr.newTree(
newIdentNode("QuadraticExt"),
nnkBracketExpr.newTree(
newIdentNode("Fp2"),
newIdentNode("Name")
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp6")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkBracketExpr.newTree(
newIdentNode("CubicExt"),
nnkBracketExpr.newTree(
newIdentNode("Fp2"),
newIdentNode("Name")
)
)
),
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Fp12")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
nnkBracketExpr.newTree(
newIdentNode("CubicExt"),
nnkBracketExpr.newTree(
newIdentNode("Fp4"),
newIdentNode("Name")
)
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("Name")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("Algebra"),
nnkIdentDefs.newTree(
newIdentNode("E"),
nnkCommand.newTree(
newIdentNode("type"),
newIdentNode("ExtensionField")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("E"),
newIdentNode("F")
),
newIdentNode("Name")
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("BLS12_381_Order"),
newEmptyNode(),
nnkBracket.newTree(
nnkCommand.newTree(
newIdentNode("uint64"),
newLit(1)
),
newLit(2),
newLit(3),
newLit(4)
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("BLS12_381_Modulus"),
newEmptyNode(),
nnkBracket.newTree(
nnkCommand.newTree(
newIdentNode("uint64"),
newLit(5)
),
newLit(6),
newLit(7),
newLit(8)
)
)
),
nnkPragma.newTree(
nnkExprColonExpr.newTree(
newIdentNode("experimental"),
newLit("dynamicBindSym")
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("baseFieldModulus")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
newIdentNode("result"),
nnkCall.newTree(
newIdentNode("bindSym"),
nnkInfix.newTree(
newIdentNode("&"),
nnkPrefix.newTree(
newIdentNode("$"),
newIdentNode("Name")
),
newLit("_Modulus")
)
)
)
)
),
nnkMacroDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("scalarFieldModulus")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
newIdentNode("result"),
nnkCall.newTree(
newIdentNode("bindSym"),
nnkInfix.newTree(
newIdentNode("&"),
nnkPrefix.newTree(
newIdentNode("$"),
newIdentNode("Name")
),
newLit("_Order")
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("FieldKind")
),
newEmptyNode(),
nnkEnumTy.newTree(
newEmptyNode(),
newIdentNode("kBaseField"),
newIdentNode("kScalarField")
)
)
),
nnkTemplateDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("getBigInt")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("untyped"),
nnkIdentDefs.newTree(
newIdentNode("Name"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("Algebra")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("kind"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("FieldKind")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkWhenStmt.newTree(
nnkElifBranch.newTree(
nnkInfix.newTree(
newIdentNode("=="),
newIdentNode("kind"),
newIdentNode("kBaseField")
),
nnkStmtList.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("Name"),
newIdentNode("baseFieldModulus")
)
),
newIdentNode("typeof")
)
)
)
),
nnkElse.newTree(
nnkStmtList.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
nnkCall.newTree(
nnkDotExpr.newTree(
newIdentNode("Name"),
newIdentNode("scalarFieldModulus")
)
),
newIdentNode("typeof")
)
)
)
)
)
)
),
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("BenchMultiexpContext")
),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("GT"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("elems"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
newIdentNode("GT")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("exponents"),
nnkBracketExpr.newTree(
newIdentNode("seq"),
nnkCall.newTree(
newIdentNode("getBigInt"),
nnkDotExpr.newTree(
newIdentNode("GT"),
newIdentNode("Name")
),
newIdentNode("kScalarField")
)
),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("createBenchMultiExpContext")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
nnkBracketExpr.newTree(
newIdentNode("BenchMultiexpContext"),
newIdentNode("GT")
),
nnkIdentDefs.newTree(
newIdentNode("GT"),
newIdentNode("typedesc"),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("inputSizes"),
nnkBracketExpr.newTree(
newIdentNode("openArray"),
newIdentNode("int")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
),
nnkProcDef.newTree(
newIdentNode("main"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("ctx"),
newEmptyNode(),
nnkCall.newTree(
newIdentNode("createBenchMultiExpContext"),
nnkBracketExpr.newTree(
newIdentNode("Fp12"),
newIdentNode("BLS12_381")
),
nnkBracket.newTree(
newLit(2),
newLit(4),
newLit(8),
newLit(16)
)
)
)
)
)
),
nnkCall.newTree(
newIdentNode("main")
)
)
2.0.4 👍 OK
Output
IR
Compiled filesize91.05 Kb (93,232 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
FR_.line = n;
#define nimlf_(n, file) \
FR_.line = n; FR_.filename = file;
typedef struct tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw;
typedef struct tySequence__VLKY2uBPko3l83XCwghOlQ tySequence__VLKY2uBPko3l83XCwghOlQ;
typedef struct tySequence__VLKY2uBPko3l83XCwghOlQ_Content tySequence__VLKY2uBPko3l83XCwghOlQ_Content;
typedef struct tySequence__c2UMJ9c6611FrPrhhM19csew tySequence__c2UMJ9c6611FrPrhhM19csew;
typedef struct tySequence__c2UMJ9c6611FrPrhhM19csew_Content tySequence__c2UMJ9c6611FrPrhhM19csew_Content;
typedef struct tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w;
typedef struct tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA;
typedef struct tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw;
typedef struct tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw;
struct tySequence__VLKY2uBPko3l83XCwghOlQ {
NI len; tySequence__VLKY2uBPko3l83XCwghOlQ_Content* p;
};
struct tySequence__c2UMJ9c6611FrPrhhM19csew {
NI len; tySequence__c2UMJ9c6611FrPrhhM19csew_Content* p;
};
struct tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw {
tySequence__VLKY2uBPko3l83XCwghOlQ elems;
tySequence__c2UMJ9c6611FrPrhhM19csew exponents;
};
typedef NI tyArray__OQPb4glXtXQGOV29cAX1uQg[4];
typedef NU64 tyArray__WOK9agWVIFrysHjlc69b06uA[4];
struct tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw {
tyArray__WOK9agWVIFrysHjlc69b06uA limbs;
};
typedef tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw tyArray__IKDINchqjr6ajMZhW1z77g[2];
struct tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw {
tyArray__IKDINchqjr6ajMZhW1z77g coords;
};
typedef tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw tyArray__qy7lj9bAu8cZHpl7tDatcAQ[2];
struct tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA {
tyArray__qy7lj9bAu8cZHpl7tDatcAQ coords;
};
typedef tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA tyArray__9a2ShoLrCUfee2tTxEaAueg[3];
struct tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w {
tyArray__9a2ShoLrCUfee2tTxEaAueg coords;
};
struct tySequence__VLKY2uBPko3l83XCwghOlQ_Content { NI cap; tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w data[SEQ_DECL_SIZE]; };
struct tySequence__c2UMJ9c6611FrPrhhM19csew_Content { NI cap; tyArray__WOK9agWVIFrysHjlc69b06uA data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u78)(void);
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1);
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__temp_u83)(NI* inputSizes_p1, NI inputSizes_p1Len_0, tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw* Result);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4621)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u130)(tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u148)(tySequence__VLKY2uBPko3l83XCwghOlQ dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p_p0, NI align_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u310)(tySequence__c2UMJ9c6611FrPrhhM19csew dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static NIM_CONST tyArray__OQPb4glXtXQGOV29cAX1uQg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {((NI)2),
((NI)4),
((NI)8),
((NI)16)}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4403;
extern NIM_THREADVAR TFrame* framePtr__system_u4020;
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
void* T1_;
T1_ = (void*)0;
T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
NIM_BOOL* result;
result = (&nimInErrorMode__system_u4403);
return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u4020 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u4020).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u4020;
framePtr__system_u4020 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u4621();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u4020 = (*framePtr__system_u4020).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__temp_u83)(NI* inputSizes_p1, NI inputSizes_p1Len_0, tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw* Result) {
nimfr_("createBenchMultiExpContext", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)Result, sizeof(tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw));
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u148)(tySequence__VLKY2uBPko3l83XCwghOlQ dest_p0) {
if (dest_p0.p && !(dest_p0.p->cap & NIM_STRLIT_FLAG)) {
alignedDealloc(dest_p0.p, NIM_ALIGNOF(tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w));
}
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u310)(tySequence__c2UMJ9c6611FrPrhhM19csew dest_p0) {
if (dest_p0.p && !(dest_p0.p->cap & NIM_STRLIT_FLAG)) {
alignedDealloc(dest_p0.p, NIM_ALIGNOF(tyArray__WOK9agWVIFrysHjlc69b06uA));
}
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u130)(tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw* dest_p0) {
eqdestroy___temp_u148((*dest_p0).elems);
eqdestroy___temp_u310((*dest_p0).exponents);
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u78)(void) {
tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw ctx;
NIM_BOOL* nimErr_;
nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
nimZeroMem((void*)(&ctx), sizeof(tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw));
createBenchMultiExpContext__temp_u83(TM__SRd76hP9cMfCzdUO857UhQQ_2, 4, (&ctx));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
eqdestroy___temp_u130((&ctx));
}BeforeRet_: ;
popFrame();
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
#if 0
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 0
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
(*inner)();
#else
PreMain();
NimMainInner();
#endif
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
NIM_BOOL* nimErr_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
main__temp_u78();
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
Stats
- Started
2024-07-18T00:50:31
- Finished
2024-07-18T00:50:32
- Duration
2.0.0 👍 OK
Output
IR
Compiled filesize91.05 Kb (93,232 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
FR_.line = n;
#define nimlf_(n, file) \
FR_.line = n; FR_.filename = file;
typedef struct tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw;
typedef struct tySequence__VLKY2uBPko3l83XCwghOlQ tySequence__VLKY2uBPko3l83XCwghOlQ;
typedef struct tySequence__VLKY2uBPko3l83XCwghOlQ_Content tySequence__VLKY2uBPko3l83XCwghOlQ_Content;
typedef struct tySequence__c2UMJ9c6611FrPrhhM19csew tySequence__c2UMJ9c6611FrPrhhM19csew;
typedef struct tySequence__c2UMJ9c6611FrPrhhM19csew_Content tySequence__c2UMJ9c6611FrPrhhM19csew_Content;
typedef struct tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w;
typedef struct tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA;
typedef struct tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw;
typedef struct tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw;
struct tySequence__VLKY2uBPko3l83XCwghOlQ {
NI len; tySequence__VLKY2uBPko3l83XCwghOlQ_Content* p;
};
struct tySequence__c2UMJ9c6611FrPrhhM19csew {
NI len; tySequence__c2UMJ9c6611FrPrhhM19csew_Content* p;
};
struct tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw {
tySequence__VLKY2uBPko3l83XCwghOlQ elems;
tySequence__c2UMJ9c6611FrPrhhM19csew exponents;
};
typedef NI tyArray__OQPb4glXtXQGOV29cAX1uQg[4];
typedef NU64 tyArray__WOK9agWVIFrysHjlc69b06uA[4];
struct tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw {
tyArray__WOK9agWVIFrysHjlc69b06uA limbs;
};
typedef tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw tyArray__IKDINchqjr6ajMZhW1z77g[2];
struct tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw {
tyArray__IKDINchqjr6ajMZhW1z77g coords;
};
typedef tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw tyArray__qy7lj9bAu8cZHpl7tDatcAQ[2];
struct tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA {
tyArray__qy7lj9bAu8cZHpl7tDatcAQ coords;
};
typedef tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA tyArray__9a2ShoLrCUfee2tTxEaAueg[3];
struct tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w {
tyArray__9a2ShoLrCUfee2tTxEaAueg coords;
};
struct tySequence__VLKY2uBPko3l83XCwghOlQ_Content { NI cap; tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w data[SEQ_DECL_SIZE]; };
struct tySequence__c2UMJ9c6611FrPrhhM19csew_Content { NI cap; tyArray__WOK9agWVIFrysHjlc69b06uA data[SEQ_DECL_SIZE]; };
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u78)(void);
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1);
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__temp_u83)(NI* inputSizes_p1, NI inputSizes_p1Len_0, tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw* Result);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4607)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u130)(tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u148)(tySequence__VLKY2uBPko3l83XCwghOlQ dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p_p0, NI align_p1);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u310)(tySequence__c2UMJ9c6611FrPrhhM19csew dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static NIM_CONST tyArray__OQPb4glXtXQGOV29cAX1uQg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {((NI)2),
((NI)4),
((NI)8),
((NI)16)}
;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4389;
extern NIM_THREADVAR TFrame* framePtr__system_u4006;
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
void* T1_;
T1_ = (void*)0;
T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
NIM_BOOL* result;
result = (NIM_BOOL*)0;
result = (&nimInErrorMode__system_u4389);
return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u4006 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u4006).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u4006;
framePtr__system_u4006 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u4607();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u4006 = (*framePtr__system_u4006).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__temp_u83)(NI* inputSizes_p1, NI inputSizes_p1Len_0, tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw* Result) {
nimfr_("createBenchMultiExpContext", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)Result, sizeof(tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw));
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u148)(tySequence__VLKY2uBPko3l83XCwghOlQ dest_p0) {
if (dest_p0.p && !(dest_p0.p->cap & NIM_STRLIT_FLAG)) {
alignedDealloc(dest_p0.p, NIM_ALIGNOF(tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w));
}
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u310)(tySequence__c2UMJ9c6611FrPrhhM19csew dest_p0) {
if (dest_p0.p && !(dest_p0.p->cap & NIM_STRLIT_FLAG)) {
alignedDealloc(dest_p0.p, NIM_ALIGNOF(tyArray__WOK9agWVIFrysHjlc69b06uA));
}
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u130)(tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw* dest_p0) {
eqdestroy___temp_u148((*dest_p0).elems);
eqdestroy___temp_u310((*dest_p0).exponents);
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u78)(void) {
tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw ctx;
NIM_BOOL* nimErr_;
nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
nimZeroMem((void*)(&ctx), sizeof(tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw));
createBenchMultiExpContext__temp_u83(TM__SRd76hP9cMfCzdUO857UhQQ_2, 4, (&ctx));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
eqdestroy___temp_u130((&ctx));
}BeforeRet_: ;
popFrame();
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
#if 0
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000();
PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 0
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
(*inner)();
#else
PreMain();
NimMainInner();
#endif
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
NIM_BOOL* nimErr_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
main__temp_u78();
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
Stats
- Started
2024-07-18T00:50:34
- Finished
2024-07-18T00:50:35
- Duration
1.6.20 👍 OK
Output
IR
Compiled filesize95.74 Kb (98,040 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
# define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
# define nimfrs_(proc, file, slots, length) \
struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
# define nimln_(n, file) \
FR_.line = n; FR_.filename = file;
typedef struct tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw;
typedef struct tySequence__VLKY2uBPko3l83XCwghOlQ tySequence__VLKY2uBPko3l83XCwghOlQ;
typedef struct tySequence__c2UMJ9c6611FrPrhhM19csew tySequence__c2UMJ9c6611FrPrhhM19csew;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w;
typedef struct tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA;
typedef struct tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw;
typedef struct tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw;
struct tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw {
tySequence__VLKY2uBPko3l83XCwghOlQ* elems;
tySequence__c2UMJ9c6611FrPrhhM19csew* exponents;
};
typedef NI tyArray__OQPb4glXtXQGOV29cAX1uQg[4];
struct TGenericSeq {
NI len;
NI reserved;
};
typedef NU64 tyArray__WOK9agWVIFrysHjlc69b06uA[4];
struct tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw {
tyArray__WOK9agWVIFrysHjlc69b06uA limbs;
};
typedef tyObject_Fp__eNw4U6SnurKcL2CQJc6qcw tyArray__IKDINchqjr6ajMZhW1z77g[2];
struct tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw {
tyArray__IKDINchqjr6ajMZhW1z77g coords;
};
typedef tyObject_QuadraticExt__fnc1By4CKzloiumq0xJngw tyArray__qy7lj9bAu8cZHpl7tDatcAQ[2];
struct tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA {
tyArray__qy7lj9bAu8cZHpl7tDatcAQ coords;
};
typedef tyObject_QuadraticExt__9bTZZQzyZ9aDAZUrnhXPq6AA tyArray__9a2ShoLrCUfee2tTxEaAueg[3];
struct tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w {
tyArray__9a2ShoLrCUfee2tTxEaAueg coords;
};
struct tySequence__VLKY2uBPko3l83XCwghOlQ {
TGenericSeq Sup;
tyObject_CubicExt__bA7EGgaYah7shnybXbvO7w data[SEQ_DECL_SIZE];
};
struct tySequence__c2UMJ9c6611FrPrhhM19csew {
TGenericSeq Sup;
tyArray__WOK9agWVIFrysHjlc69b06uA data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u87)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__temp_u92)(NI* inputSizes, NI inputSizesLen_0, tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw* Result);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u2997)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static NIM_CONST tyArray__OQPb4glXtXQGOV29cAX1uQg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {((NI) 2),
((NI) 4),
((NI) 8),
((NI) 16)}
;
extern TFrame* framePtr__system_u2564;
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a, int v, NI size) {
void* T1_;
T1_ = (void*)0;
T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
nimSetMem__systemZmemory_u7(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr__system_u2564 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr__system_u2564).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr__system_u2564;
framePtr__system_u2564 = s;
{
if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
callDepthLimitReached__system_u2997();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u2564 = (*framePtr__system_u2564).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__temp_u92)(NI* inputSizes, NI inputSizesLen_0, tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw* Result) {
nimfr_("createBenchMultiExpContext", "/home/runner/work/Nim/Nim/temp.nim");
unsureAsgnRef((void**)&(*Result).elems, NIM_NIL);
unsureAsgnRef((void**)&(*Result).exponents, NIM_NIL);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__temp_u87)(void) {
tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw ctx;
nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&ctx), sizeof(tyObject_BenchMultiexpContext__4SOYlsnUkvEk9aSk9bbJSuqw));
createBenchMultiExpContext__temp_u92(TM__SRd76hP9cMfCzdUO857UhQQ_2, 4, (&ctx));
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot20atslibatssystemdotnim_Init000();
(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
main__temp_u87();
popFrame();
}
}
Stats
- Started
2024-07-18T00:50:37
- Finished
2024-07-18T00:50:38
- Duration
1.4.8 👍 OK
Output
IR
Compiled filesize91.43 Kb (93,624 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
# define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
# define nimfrs_(proc, file, slots, length) \
struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
# define nimln_(n, file) \
FR_.line = n; FR_.filename = file;
typedef struct tyObject_BenchMultiexpContext__JxWxgRMK7vOPV5bpgLEZ5g tyObject_BenchMultiexpContext__JxWxgRMK7vOPV5bpgLEZ5g;
typedef struct tySequence__ssgmplwPbekzfermlBzIGg tySequence__ssgmplwPbekzfermlBzIGg;
typedef struct tySequence__c2UMJ9c6611FrPrhhM19csew tySequence__c2UMJ9c6611FrPrhhM19csew;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_CubicExt__YMUnYTQtFplSNJjtUES6Gg tyObject_CubicExt__YMUnYTQtFplSNJjtUES6Gg;
typedef struct tyObject_QuadraticExt__WAJlzyaK1LQ5WqYf9cHr9bwQ tyObject_QuadraticExt__WAJlzyaK1LQ5WqYf9cHr9bwQ;
typedef struct tyObject_QuadraticExt__mMB9cLWpbLb5fbANGQHRQMA tyObject_QuadraticExt__mMB9cLWpbLb5fbANGQHRQMA;
typedef struct tyObject_Fp__B69a6JkLMZS2sQD3DiOcPmQ tyObject_Fp__B69a6JkLMZS2sQD3DiOcPmQ;
struct tyObject_BenchMultiexpContext__JxWxgRMK7vOPV5bpgLEZ5g {
tySequence__ssgmplwPbekzfermlBzIGg* elems;
tySequence__c2UMJ9c6611FrPrhhM19csew* exponents;
};
typedef NI tyArray__OQPb4glXtXQGOV29cAX1uQg[4];
struct TGenericSeq {
NI len;
NI reserved;
};
typedef NU64 tyArray__WOK9agWVIFrysHjlc69b06uA[4];
struct tyObject_Fp__B69a6JkLMZS2sQD3DiOcPmQ {
tyArray__WOK9agWVIFrysHjlc69b06uA limbs;
};
typedef tyObject_Fp__B69a6JkLMZS2sQD3DiOcPmQ tyArray__nqDQhNIYVlx3SlUz8kpvDw[2];
struct tyObject_QuadraticExt__mMB9cLWpbLb5fbANGQHRQMA {
tyArray__nqDQhNIYVlx3SlUz8kpvDw coords;
};
typedef tyObject_QuadraticExt__mMB9cLWpbLb5fbANGQHRQMA tyArray__7Gv482g8fLS02Es3UnR8pA[2];
struct tyObject_QuadraticExt__WAJlzyaK1LQ5WqYf9cHr9bwQ {
tyArray__7Gv482g8fLS02Es3UnR8pA coords;
};
typedef tyObject_QuadraticExt__WAJlzyaK1LQ5WqYf9cHr9bwQ tyArray__WxtIqnDy8oeV7001tnv3wg[3];
struct tyObject_CubicExt__YMUnYTQtFplSNJjtUES6Gg {
tyArray__WxtIqnDy8oeV7001tnv3wg coords;
};
struct tySequence__ssgmplwPbekzfermlBzIGg {
TGenericSeq Sup;
tyObject_CubicExt__YMUnYTQtFplSNJjtUES6Gg data[SEQ_DECL_SIZE];
};
struct tySequence__c2UMJ9c6611FrPrhhM19csew {
TGenericSeq Sup;
tyArray__WOK9agWVIFrysHjlc69b06uA data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, main__EzBZaa239as9bFx8yeHDoTOw)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__PRSxGjFIiTWoYmw9bnBv0Rw)(NI* inputSizes, NI inputSizesLen_0, tyObject_BenchMultiexpContext__JxWxgRMK7vOPV5bpgLEZ5g* Result);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static NIM_CONST tyArray__OQPb4glXtXQGOV29cAX1uQg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {((NI) 2),
((NI) 4),
((NI) 8),
((NI) 16)}
;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
void* T1_;
T1_ = (void*)0;
T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == ((TFrame*) NIM_NIL))) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
{
if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__PRSxGjFIiTWoYmw9bnBv0Rw)(NI* inputSizes, NI inputSizesLen_0, tyObject_BenchMultiexpContext__JxWxgRMK7vOPV5bpgLEZ5g* Result) {
nimfr_("createBenchMultiExpContext", "/home/runner/work/Nim/Nim/temp.nim");
unsureAsgnRef((void**)&(*Result).elems, NIM_NIL);
unsureAsgnRef((void**)&(*Result).exponents, NIM_NIL);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__EzBZaa239as9bFx8yeHDoTOw)(void) {
tyObject_BenchMultiexpContext__JxWxgRMK7vOPV5bpgLEZ5g ctx;
nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&ctx), sizeof(tyObject_BenchMultiexpContext__JxWxgRMK7vOPV5bpgLEZ5g));
createBenchMultiExpContext__PRSxGjFIiTWoYmw9bnBv0Rw(TM__SRd76hP9cMfCzdUO857UhQQ_2, 4, (&ctx));
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
void (*volatile inner)(void);
inner = PreMainInner;
systemDatInit000();
initStackBottomWith((void *)&inner);
systemInit000();
(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
main__EzBZaa239as9bFx8yeHDoTOw();
popFrame();
}
}
Stats
- Started
2024-07-18T00:50:40
- Finished
2024-07-18T00:50:40
- Duration
1.2.18 👍 OK
Output
IR
Compiled filesize91.47 Kb (93,664 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
# define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
# define nimfrs_(proc, file, slots, length) \
struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
# define nimln_(n, file) \
FR_.line = n; FR_.filename = file;
typedef struct tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg;
typedef struct tySequence__MIJql2j4wHnRQziHINc50g tySequence__MIJql2j4wHnRQziHINc50g;
typedef struct tySequence__c2UMJ9c6611FrPrhhM19csew tySequence__c2UMJ9c6611FrPrhhM19csew;
typedef struct TGenericSeq TGenericSeq;
typedef struct tyObject_CubicExt__FbJb2yQ9bFfez63Blq7RUpA tyObject_CubicExt__FbJb2yQ9bFfez63Blq7RUpA;
typedef struct tyObject_QuadraticExt__AdjTaRnn5nZWC3wShUTwnw tyObject_QuadraticExt__AdjTaRnn5nZWC3wShUTwnw;
typedef struct tyObject_QuadraticExt__8c9b9a2r89cLS4WabCCh32Mnw tyObject_QuadraticExt__8c9b9a2r89cLS4WabCCh32Mnw;
typedef struct tyObject_Fp__O1lss0Pb5ya1tPwRY9bdclQ tyObject_Fp__O1lss0Pb5ya1tPwRY9bdclQ;
struct tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg {
tySequence__MIJql2j4wHnRQziHINc50g* elems;
tySequence__c2UMJ9c6611FrPrhhM19csew* exponents;
};
typedef NI tyArray__OQPb4glXtXQGOV29cAX1uQg[4];
struct TGenericSeq {
NI len;
NI reserved;
};
typedef NU64 tyArray__WOK9agWVIFrysHjlc69b06uA[4];
struct tyObject_Fp__O1lss0Pb5ya1tPwRY9bdclQ {
tyArray__WOK9agWVIFrysHjlc69b06uA limbs;
};
typedef tyObject_Fp__O1lss0Pb5ya1tPwRY9bdclQ tyArray__PsRPFeiJeTmVCtPiNsVJhw[2];
struct tyObject_QuadraticExt__8c9b9a2r89cLS4WabCCh32Mnw {
tyArray__PsRPFeiJeTmVCtPiNsVJhw coords;
};
typedef tyObject_QuadraticExt__8c9b9a2r89cLS4WabCCh32Mnw tyArray__qemONRkOATPzLVqsiKRqYQ[2];
struct tyObject_QuadraticExt__AdjTaRnn5nZWC3wShUTwnw {
tyArray__qemONRkOATPzLVqsiKRqYQ coords;
};
typedef tyObject_QuadraticExt__AdjTaRnn5nZWC3wShUTwnw tyArray__pUBssAfummFAoVNM9bNt2Ow[3];
struct tyObject_CubicExt__FbJb2yQ9bFfez63Blq7RUpA {
tyArray__pUBssAfummFAoVNM9bNt2Ow coords;
};
struct tySequence__MIJql2j4wHnRQziHINc50g {
TGenericSeq Sup;
tyObject_CubicExt__FbJb2yQ9bFfez63Blq7RUpA data[SEQ_DECL_SIZE];
};
struct tySequence__c2UMJ9c6611FrPrhhM19csew {
TGenericSeq Sup;
tyArray__WOK9agWVIFrysHjlc69b06uA data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, main__EzBZaa239as9bFx8yeHDoTOw)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__Pd0dWqPGb1EipjS9bmbIMJQ)(NI* inputSizes, NI inputSizesLen_0, tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg* Result);
N_LIB_PRIVATE N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static NIM_CONST tyArray__OQPb4glXtXQGOV29cAX1uQg TM__SRd76hP9cMfCzdUO857UhQQ_2 = {((NI) 2),
((NI) 4),
((NI) 8),
((NI) 16)}
;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) {
void* T1_;
T1_ = (void*)0;
T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
{
if (!((*s).calldepth == ((NI16) (((NI) 2000))))) goto LA8_;
callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__Pd0dWqPGb1EipjS9bmbIMJQ)(NI* inputSizes, NI inputSizesLen_0, tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg* Result) {
nimfr_("createBenchMultiExpContext", "/home/runner/work/Nim/Nim/temp.nim");
chckNil((void*)Result);
unsureAsgnRef((void**)&(*Result).elems, NIM_NIL);
unsureAsgnRef((void**)&(*Result).exponents, NIM_NIL);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__EzBZaa239as9bFx8yeHDoTOw)(void) {
tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg ctx;
nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&ctx), sizeof(tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg));
createBenchMultiExpContext__Pd0dWqPGb1EipjS9bmbIMJQ(TM__SRd76hP9cMfCzdUO857UhQQ_2, 4, (&ctx));
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
void (*volatile inner)(void);
inner = PreMainInner;
systemDatInit000();
initStackBottomWith((void *)&inner);
systemInit000();
(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
main__EzBZaa239as9bFx8yeHDoTOw();
popFrame();
}
}
Stats
- Started
2024-07-18T00:50:42
- Finished
2024-07-18T00:50:42
- Duration
1.0.10 👍 OK
Output
IR
Compiled filesize87.59 Kb (89,688 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
# define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
# define nimfrs_(proc, file, slots, length) \
struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename; NI len; VarSlot s[slots];} FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
# define nimln_(n, file) \
FR_.line = n; FR_.filename = file;
typedef struct tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg;
typedef struct tySequence__MIJql2j4wHnRQziHINc50g tySequence__MIJql2j4wHnRQziHINc50g;
typedef struct tySequence__c2UMJ9c6611FrPrhhM19csew tySequence__c2UMJ9c6611FrPrhhM19csew;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_CubicExt__FbJb2yQ9bFfez63Blq7RUpA tyObject_CubicExt__FbJb2yQ9bFfez63Blq7RUpA;
typedef struct tyObject_QuadraticExt__AdjTaRnn5nZWC3wShUTwnw tyObject_QuadraticExt__AdjTaRnn5nZWC3wShUTwnw;
typedef struct tyObject_QuadraticExt__8c9b9a2r89cLS4WabCCh32Mnw tyObject_QuadraticExt__8c9b9a2r89cLS4WabCCh32Mnw;
typedef struct tyObject_Fp__O1lss0Pb5ya1tPwRY9bdclQ tyObject_Fp__O1lss0Pb5ya1tPwRY9bdclQ;
typedef struct TGenericSeq TGenericSeq;
struct tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg {
tySequence__MIJql2j4wHnRQziHINc50g* elems;
tySequence__c2UMJ9c6611FrPrhhM19csew* exponents;
};
typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU64 tyArray__WOK9agWVIFrysHjlc69b06uA[4];
struct tyObject_Fp__O1lss0Pb5ya1tPwRY9bdclQ {
tyArray__WOK9agWVIFrysHjlc69b06uA limbs;
};
typedef tyObject_Fp__O1lss0Pb5ya1tPwRY9bdclQ tyArray__PsRPFeiJeTmVCtPiNsVJhw[2];
struct tyObject_QuadraticExt__8c9b9a2r89cLS4WabCCh32Mnw {
tyArray__PsRPFeiJeTmVCtPiNsVJhw coords;
};
typedef tyObject_QuadraticExt__8c9b9a2r89cLS4WabCCh32Mnw tyArray__qemONRkOATPzLVqsiKRqYQ[2];
struct tyObject_QuadraticExt__AdjTaRnn5nZWC3wShUTwnw {
tyArray__qemONRkOATPzLVqsiKRqYQ coords;
};
typedef tyObject_QuadraticExt__AdjTaRnn5nZWC3wShUTwnw tyArray__pUBssAfummFAoVNM9bNt2Ow[3];
struct tyObject_CubicExt__FbJb2yQ9bFfez63Blq7RUpA {
tyArray__pUBssAfummFAoVNM9bNt2Ow coords;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TGenericSeq {
NI len;
NI reserved;
};
typedef NI tyArray__OQPb4glXtXQGOV29cAX1uQg[4];
struct tySequence__MIJql2j4wHnRQziHINc50g {
TGenericSeq Sup;
tyObject_CubicExt__FbJb2yQ9bFfez63Blq7RUpA data[SEQ_DECL_SIZE];
};
struct tySequence__c2UMJ9c6611FrPrhhM19csew {
TGenericSeq Sup;
tyArray__WOK9agWVIFrysHjlc69b06uA data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, main__EzBZaa239as9bFx8yeHDoTOw)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__Pd0dWqPGb1EipjS9bmbIMJQ)(NI* inputSizes, NI inputSizesLen_0, tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg* Result);
N_NOINLINE(void, chckNil)(void* p);
N_NIMCALL(void, genericReset)(void* dest, TNimType* mt);
static N_NIMCALL(void, Marker_tySequence__MIJql2j4wHnRQziHINc50g)(void* p, NI op);
static N_NIMCALL(void, Marker_tySequence__c2UMJ9c6611FrPrhhM19csew)(void* p, NI op);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
TNimType NTI__uqFN31Uk4LOnlIvszeUoCg_;
TNimType NTI__FbJb2yQ9bFfez63Blq7RUpA_;
TNimType NTI__AdjTaRnn5nZWC3wShUTwnw_;
TNimType NTI__8c9b9a2r89cLS4WabCCh32Mnw_;
TNimType NTI__O1lss0Pb5ya1tPwRY9bdclQ_;
extern TNimType NTI__wMtfD88jmrPZwfzTH9c8e9cA_;
TNimType NTI__WOK9agWVIFrysHjlc69b06uA_;
TNimType NTI__PsRPFeiJeTmVCtPiNsVJhw_;
TNimType NTI__qemONRkOATPzLVqsiKRqYQ_;
TNimType NTI__pUBssAfummFAoVNM9bNt2Ow_;
TNimType NTI__MIJql2j4wHnRQziHINc50g_;
TNimType NTI__c2UMJ9c6611FrPrhhM19csew_;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
NIM_CONST tyArray__OQPb4glXtXQGOV29cAX1uQg TM__SRd76hP9cMfCzdUO857UhQQ_3 = {((NI) 2),
((NI) 4),
((NI) 8),
((NI) 16)}
;
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size) { void* T1_;
T1_ = (void*)0;
T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) { nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
}
static N_NIMCALL(void, Marker_tySequence__MIJql2j4wHnRQziHINc50g)(void* p, NI op) {
tySequence__MIJql2j4wHnRQziHINc50g* a;
NI T1_;
NI T2_;
NI T3_;
NI T4_;
NI T5_;
a = (tySequence__MIJql2j4wHnRQziHINc50g*)p;
T1_ = (NI)0;
for (T1_ = 0; T1_ < (a ? a->Sup.len : 0); T1_++) {
T2_ = (NI)0;
for (T2_ = 0; T2_ < 3; T2_++) {
T3_ = (NI)0;
for (T3_ = 0; T3_ < 2; T3_++) {
T4_ = (NI)0;
for (T4_ = 0; T4_ < 2; T4_++) {
T5_ = (NI)0;
}
}
}
}
}
static N_NIMCALL(void, Marker_tySequence__c2UMJ9c6611FrPrhhM19csew)(void* p, NI op) {
tySequence__c2UMJ9c6611FrPrhhM19csew* a;
NI T1_;
NI T2_;
a = (tySequence__c2UMJ9c6611FrPrhhM19csew*)p;
T1_ = (NI)0;
for (T1_ = 0; T1_ < (a ? a->Sup.len : 0); T1_++) {
T2_ = (NI)0;
}
}
static N_INLINE(void, nimFrame)(TFrame* s) { NI T1_;
T1_ = (NI)0;
{
if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA4_;
T1_ = ((NI) 0);
}
goto LA2_;
LA4_: ;
{
T1_ = ((NI) ((NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1))));
}
LA2_: ;
(*s).calldepth = ((NI16) (T1_));
(*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
{
if (!((*s).calldepth == ((NI16) (((NI) 2000))))) goto LA9_;
callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
}
LA9_: ;
}
static N_INLINE(void, popFrame)(void) { framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, createBenchMultiExpContext__Pd0dWqPGb1EipjS9bmbIMJQ)(NI* inputSizes, NI inputSizesLen_0, tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg* Result) { nimfr_("createBenchMultiExpContext", "/home/runner/work/Nim/Nim/temp.nim");
chckNil((void*)Result);
genericReset((void*)Result, (&NTI__uqFN31Uk4LOnlIvszeUoCg_));
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, main__EzBZaa239as9bFx8yeHDoTOw)(void) { tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg ctx;
nimfr_("main", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&ctx), sizeof(tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg));
createBenchMultiExpContext__Pd0dWqPGb1EipjS9bmbIMJQ(TM__SRd76hP9cMfCzdUO857UhQQ_3, 4, (&ctx));
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) { nimGC_setStackBottom(locals);
}
void PreMainInner(void) {
}
int cmdCount;
char** cmdLine;
char** gEnv;
void PreMain(void) {
void (*volatile inner)(void);
inner = PreMainInner;
systemDatInit000();
initStackBottomWith((void *)&inner);
systemInit000();
tempDatInit000();
(*inner)();
}
N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
main__EzBZaa239as9bFx8yeHDoTOw();
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
static TNimNode* TM__SRd76hP9cMfCzdUO857UhQQ_2_2[2];
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[7];
NTI__uqFN31Uk4LOnlIvszeUoCg_.size = sizeof(tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg);
NTI__uqFN31Uk4LOnlIvszeUoCg_.kind = 18;
NTI__uqFN31Uk4LOnlIvszeUoCg_.base = 0;
NTI__uqFN31Uk4LOnlIvszeUoCg_.flags = 2;
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTI__FbJb2yQ9bFfez63Blq7RUpA_.size = sizeof(tyObject_CubicExt__FbJb2yQ9bFfez63Blq7RUpA);
NTI__FbJb2yQ9bFfez63Blq7RUpA_.kind = 18;
NTI__FbJb2yQ9bFfez63Blq7RUpA_.base = 0;
NTI__FbJb2yQ9bFfez63Blq7RUpA_.flags = 3;
NTI__AdjTaRnn5nZWC3wShUTwnw_.size = sizeof(tyObject_QuadraticExt__AdjTaRnn5nZWC3wShUTwnw);
NTI__AdjTaRnn5nZWC3wShUTwnw_.kind = 18;
NTI__AdjTaRnn5nZWC3wShUTwnw_.base = 0;
NTI__AdjTaRnn5nZWC3wShUTwnw_.flags = 3;
NTI__8c9b9a2r89cLS4WabCCh32Mnw_.size = sizeof(tyObject_QuadraticExt__8c9b9a2r89cLS4WabCCh32Mnw);
NTI__8c9b9a2r89cLS4WabCCh32Mnw_.kind = 18;
NTI__8c9b9a2r89cLS4WabCCh32Mnw_.base = 0;
NTI__8c9b9a2r89cLS4WabCCh32Mnw_.flags = 3;
NTI__O1lss0Pb5ya1tPwRY9bdclQ_.size = sizeof(tyObject_Fp__O1lss0Pb5ya1tPwRY9bdclQ);
NTI__O1lss0Pb5ya1tPwRY9bdclQ_.kind = 18;
NTI__O1lss0Pb5ya1tPwRY9bdclQ_.base = 0;
NTI__O1lss0Pb5ya1tPwRY9bdclQ_.flags = 3;
NTI__WOK9agWVIFrysHjlc69b06uA_.size = sizeof(tyArray__WOK9agWVIFrysHjlc69b06uA);
NTI__WOK9agWVIFrysHjlc69b06uA_.kind = 16;
NTI__WOK9agWVIFrysHjlc69b06uA_.base = (&NTI__wMtfD88jmrPZwfzTH9c8e9cA_);
NTI__WOK9agWVIFrysHjlc69b06uA_.flags = 3;
TM__SRd76hP9cMfCzdUO857UhQQ_0[5].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[5].offset = offsetof(tyObject_Fp__O1lss0Pb5ya1tPwRY9bdclQ, limbs);
TM__SRd76hP9cMfCzdUO857UhQQ_0[5].typ = (&NTI__WOK9agWVIFrysHjlc69b06uA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[5].name = "limbs";
NTI__O1lss0Pb5ya1tPwRY9bdclQ_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[5];
NTI__PsRPFeiJeTmVCtPiNsVJhw_.size = sizeof(tyArray__PsRPFeiJeTmVCtPiNsVJhw);
NTI__PsRPFeiJeTmVCtPiNsVJhw_.kind = 16;
NTI__PsRPFeiJeTmVCtPiNsVJhw_.base = (&NTI__O1lss0Pb5ya1tPwRY9bdclQ_);
NTI__PsRPFeiJeTmVCtPiNsVJhw_.flags = 3;
TM__SRd76hP9cMfCzdUO857UhQQ_0[4].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[4].offset = offsetof(tyObject_QuadraticExt__8c9b9a2r89cLS4WabCCh32Mnw, coords);
TM__SRd76hP9cMfCzdUO857UhQQ_0[4].typ = (&NTI__PsRPFeiJeTmVCtPiNsVJhw_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[4].name = "coords";
NTI__8c9b9a2r89cLS4WabCCh32Mnw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[4];
NTI__qemONRkOATPzLVqsiKRqYQ_.size = sizeof(tyArray__qemONRkOATPzLVqsiKRqYQ);
NTI__qemONRkOATPzLVqsiKRqYQ_.kind = 16;
NTI__qemONRkOATPzLVqsiKRqYQ_.base = (&NTI__8c9b9a2r89cLS4WabCCh32Mnw_);
NTI__qemONRkOATPzLVqsiKRqYQ_.flags = 3;
TM__SRd76hP9cMfCzdUO857UhQQ_0[3].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[3].offset = offsetof(tyObject_QuadraticExt__AdjTaRnn5nZWC3wShUTwnw, coords);
TM__SRd76hP9cMfCzdUO857UhQQ_0[3].typ = (&NTI__qemONRkOATPzLVqsiKRqYQ_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[3].name = "coords";
NTI__AdjTaRnn5nZWC3wShUTwnw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[3];
NTI__pUBssAfummFAoVNM9bNt2Ow_.size = sizeof(tyArray__pUBssAfummFAoVNM9bNt2Ow);
NTI__pUBssAfummFAoVNM9bNt2Ow_.kind = 16;
NTI__pUBssAfummFAoVNM9bNt2Ow_.base = (&NTI__AdjTaRnn5nZWC3wShUTwnw_);
NTI__pUBssAfummFAoVNM9bNt2Ow_.flags = 3;
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].offset = offsetof(tyObject_CubicExt__FbJb2yQ9bFfez63Blq7RUpA, coords);
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].typ = (&NTI__pUBssAfummFAoVNM9bNt2Ow_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[2].name = "coords";
NTI__FbJb2yQ9bFfez63Blq7RUpA_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[2];
NTI__MIJql2j4wHnRQziHINc50g_.size = sizeof(tySequence__MIJql2j4wHnRQziHINc50g*);
NTI__MIJql2j4wHnRQziHINc50g_.kind = 24;
NTI__MIJql2j4wHnRQziHINc50g_.base = (&NTI__FbJb2yQ9bFfez63Blq7RUpA_);
NTI__MIJql2j4wHnRQziHINc50g_.flags = 2;
NTI__MIJql2j4wHnRQziHINc50g_.marker = Marker_tySequence__MIJql2j4wHnRQziHINc50g;
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].offset = offsetof(tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg, elems);
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].typ = (&NTI__MIJql2j4wHnRQziHINc50g_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[1].name = "elems";
TM__SRd76hP9cMfCzdUO857UhQQ_2_2[1] = &TM__SRd76hP9cMfCzdUO857UhQQ_0[6];
NTI__c2UMJ9c6611FrPrhhM19csew_.size = sizeof(tySequence__c2UMJ9c6611FrPrhhM19csew*);
NTI__c2UMJ9c6611FrPrhhM19csew_.kind = 24;
NTI__c2UMJ9c6611FrPrhhM19csew_.base = (&NTI__WOK9agWVIFrysHjlc69b06uA_);
NTI__c2UMJ9c6611FrPrhhM19csew_.flags = 2;
NTI__c2UMJ9c6611FrPrhhM19csew_.marker = Marker_tySequence__c2UMJ9c6611FrPrhhM19csew;
TM__SRd76hP9cMfCzdUO857UhQQ_0[6].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[6].offset = offsetof(tyObject_BenchMultiexpContext__uqFN31Uk4LOnlIvszeUoCg, exponents);
TM__SRd76hP9cMfCzdUO857UhQQ_0[6].typ = (&NTI__c2UMJ9c6611FrPrhhM19csew_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[6].name = "exponents";
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].len = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 2; TM__SRd76hP9cMfCzdUO857UhQQ_0[0].sons = &TM__SRd76hP9cMfCzdUO857UhQQ_2_2[0];
NTI__uqFN31Uk4LOnlIvszeUoCg_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-07-18T00:50:44
- Finished
2024-07-18T00:50:45
- Duration
#f1789cc46 ➡️ 🐛
Diagnostics
metagn introduced a bug at 2023-09-01 10:00:15 +0300
on commit #f1789cc46 with message:
resolve local symbols in generic type call RHS (#22610)
resolve local symbols in generic type call
fixes #14509
The bug is in the files:
compiler/semtypes.nim
tests/generics/m14509.nim
tests/generics/t14509.nim
The bug can be in the commits:
(Diagnostics sometimes off-by-one).
Stats
- GCC
11.4.0
- Clang
14.0.0
- NodeJS
20.4
- Created
2024-07-18T00:49:54Z
- Comments
1
- Commands
nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
🤖 Bug found in 28 minutes
bisecting 709
commits at 25
commits per second
from nim.
from nim.
Simplified
type
QuadraticExt[F] = object
coords: array[2, F]
template Name(E: type QuadraticExt): int =
123
template getBigInt(Name: static int): untyped =
int
type Foo[GT] = object
a: getBigInt(GT.Name)
var x: Foo[QuadraticExt[int]]
from nim.
In my full example
reordering
type BenchMultiexpContext*[GT] = object
tp: Threadpool
numInputs: int
elems: seq[GT]
exponents: seq[getBigInt(GT.Name, kScalarField)]
to
type BenchMultiexpContext*[GT] = object
tp: Threadpool
numInputs: int
exponents: seq[getBigInt(GT.Name(), kScalarField)]
elems: seq[GT]
makes things compile
EDIT: actually it's the parenthesis that mattered
from nim.
Related Issues (20)
- Custom iterator is not found if used in template function, if used from a third file HOT 1
- bisecting 2.2.0 rc1 HOT 17
- cursor optimizer doesn't understand that distinct cstring can be an owning type
- Cross compilation with mingw for cpu=i386 from linux/macos fails with time_t bug HOT 2
- Type error when sink added to parameters HOT 2
- Nim `devel` nightly `i386` build failing HOT 1
- `koch pdf` produces a warning about unknown substitution 'nimversion'
- `nim gendepend` does not work with var-less destructors
- When JS, operations on pointer casted from ref object raises Runtime-Errors
- Identifier expected or compiler segfault with templates over generic type in type section HOT 3
- Nested generic/static parameter: undeclared identifier in typesections HOT 2
- 2.2.0 rc1 regression with cdecl functions
- Warnings missing when compiling the same file twice HOT 4
- `genericsOpenSym` not working when additional generally non-matching symbol with same name is present HOT 1
- nimsuggest crashes when using `--mm:arc/orc` and if an object that contains `string` or `seq` is constructed HOT 2
- ARC hooks missing when sinking generic typeclass HOT 3
- Generic concepts not compatible with openarray HOT 2
- os module uses wrong path separator in nimvm when cross-compiling HOT 2
- Add asynchronous notification feature into db_postgres lib
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nim.