Comments (16)
!nim c --gc:refc
type AnObject* = object of RootObj
value*: int
proc mutate(a: sink AnObject) =
a.value = 1
var obj = AnObject(value: 42)
mutate(obj)
doAssert obj.value == 42
from nim.
!nim c --gc:refc
type AnObject = object of RootObj
value*: int
proc `=destroy`(x: var AnObject) = discard
proc mutate(a: sink AnObject) =
a.value = 1
var obj = AnObject(value: 42)
mutate(obj)
doAssert obj.value == 42
from nim.
!nim c --gc:arc
type AnObject* = object of RootObj
value*: int
proc mutate(a: sink AnObject) =
a.value = 1
proc foo =
var obj = AnObject(value: 42)
doAssert obj.value == 42
mutate(obj)
doAssert obj.value == 42
foo()
from nim.
arc is affected as well, which is a regression, I will fix that first => #23359
from nim.
related issues: #22175 #12340 #22173
from nim.
does this also affect 2.0/refc?
from nim.
@arnetheduck yes it does, unfortunately.
from nim.
🐧 Linux bisect by @gmega (contributor)
devel 👎 FAIL
Output
Error: Command failed: nim c --gc:refc --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
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/.choosenim/toolchains/nim-#devel/lib/std/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-#devel/lib/std/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-#devel/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(7, 1) `obj.value == 42` [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp'
assertions.nim(34) raiseAssert
Error: unhandled exception: errGenerated [AssertionDefect]
IR
Compiled filesize106.34 Kb (108,896 bytes)
#define NIM_INTBITS 64
#include "nimbase.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 TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef NU8 tyEnum_TNimKind__ClA3xuAkmIebTG0trkhp7w;
typedef NU8 tySet_tyEnum_TNimTypeFlag__lkZ7PEzlp5IUJlUpsPWkog;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p_p0, NI op_p1);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p_p0);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__ClA3xuAkmIebTG0trkhp7w kind;
tySet_tyEnum_TNimTypeFlag__lkZ7PEzlp5IUJlUpsPWkog flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__IIT6i6x8UigmmmGU9bo5uUw;
struct TNimNode {
tyEnum_TNimNodeKind__IIT6i6x8UigmmmGU9bo5uUw kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u3151)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u69)(NimStringDesc* msg_p0);
static N_INLINE(void, initStackBottomWith)(void* locals_p0);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom_p0);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTIanobject__mYtkcMynpviMNZYFlqg5JQ_;
extern TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(7, 1) `obj.value == 42` ", 59);
N_LIB_PRIVATE tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj__temp_u21 = {{(&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_)}, ((NI)42)}
;
extern NIM_THREADVAR TFrame* framePtr__system_u2625;
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u2625 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u2625).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u2625;
framePtr__system_u2625 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u3151();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u2625 = (*framePtr__system_u2625).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a_p0).value = ((NI)1);
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals_p0) {
nimGC_setStackBottom(locals_p0);
}
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 1
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 1
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
#else
PreMain();
initStackBottomWith((void *)&inner);
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) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
mutate__temp_u3((&obj__temp_u21));
{
if (!!((obj__temp_u21.value == ((NI)42)))) goto LA3_;
failedAssertImpl__stdZassertions_u69(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.align = NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.kind = 17;
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.base = (&NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T12:28:08
- Finished
2024-02-27T12:28:09
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
stable 👎 FAIL
Output
Error: Command failed: nim c --gc:refc --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
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/std/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/std/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(7, 1) `obj.value == 42` [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp'
assertions.nim(34) raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]
IR
Compiled filesize106.33 Kb (108,880 bytes)
#define NIM_INTBITS 64
#include "nimbase.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 TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef NU8 tyEnum_TNimKind__tkzilgOTS67iC3a7h549aiw;
typedef NU8 tySet_tyEnum_TNimTypeFlag__9aI2dAe9cy2LQ7Dp9cypyl4rA;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p_p0, NI op_p1);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p_p0);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__tkzilgOTS67iC3a7h549aiw kind;
tySet_tyEnum_TNimTypeFlag__9aI2dAe9cy2LQ7Dp9cypyl4rA flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__wYCe8vXIm9cHBnYL2fAWT2A;
struct TNimNode {
tyEnum_TNimNodeKind__wYCe8vXIm9cHBnYL2fAWT2A kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u3134)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u85)(NimStringDesc* msg_p0);
static N_INLINE(void, initStackBottomWith)(void* locals_p0);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom_p0);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTIanobject__mYtkcMynpviMNZYFlqg5JQ_;
extern TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(7, 1) `obj.value == 42` ", 59);
N_LIB_PRIVATE tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj__temp_u21 = {{(&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_)}, ((NI)42)}
;
extern NIM_THREADVAR TFrame* framePtr__system_u2601;
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u2601 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u2601).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u2601;
framePtr__system_u2601 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u3134();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u2601 = (*framePtr__system_u2601).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a_p0).value = ((NI)1);
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals_p0) {
nimGC_setStackBottom(locals_p0);
}
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 1
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 1
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
#else
PreMain();
initStackBottomWith((void *)&inner);
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) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
mutate__temp_u3((&obj__temp_u21));
{
if (!!((obj__temp_u21.value == ((NI)42)))) goto LA3_;
failedAssertImpl__stdZassertions_u85(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.align = NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.kind = 17;
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.base = (&NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T12:28:10
- Finished
2024-02-27T12:28:10
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
2.0.0 👎 FAIL
Output
Error: Command failed: nim c --gc:refc --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
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/.choosenim/toolchains/nim-2.0.0/lib/std/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-2.0.0/lib/std/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-2.0.0/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(7, 1) `obj.value == 42` [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp'
assertions.nim(34) raiseAssert
Error: unhandled exception: options.nim(664, 5) `false` errGenerated [AssertionDefect]
IR
Compiled filesize106.34 Kb (108,888 bytes)
#define NIM_INTBITS 64
#include "nimbase.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 TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef NU8 tyEnum_TNimKind__gvi1epwSO1OTm5TYYpvciQ;
typedef NU8 tySet_tyEnum_TNimTypeFlag__kg8CbOmSm78f9cYZNYwXtRw;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p_p0, NI op_p1);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p_p0);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__gvi1epwSO1OTm5TYYpvciQ kind;
tySet_tyEnum_TNimTypeFlag__kg8CbOmSm78f9cYZNYwXtRw flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__27ptuqE7C12XXCcK2N0u8g;
struct TNimNode {
tyEnum_TNimNodeKind__27ptuqE7C12XXCcK2N0u8g kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u3134)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u85)(NimStringDesc* msg_p0);
static N_INLINE(void, initStackBottomWith)(void* locals_p0);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom_p0);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTIanobject__mYtkcMynpviMNZYFlqg5JQ_;
extern TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(7, 1) `obj.value == 42` ", 59);
N_LIB_PRIVATE tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj__temp_u21 = {{(&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_)}, ((NI)42)}
;
extern NIM_THREADVAR TFrame* framePtr__system_u2601;
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u2601 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u2601).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u2601;
framePtr__system_u2601 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u3134();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u2601 = (*framePtr__system_u2601).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a_p0).value = ((NI)1);
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals_p0) {
nimGC_setStackBottom(locals_p0);
}
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 1
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 1
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
#else
PreMain();
initStackBottomWith((void *)&inner);
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) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
mutate__temp_u3((&obj__temp_u21));
{
if (!!((obj__temp_u21.value == ((NI)42)))) goto LA3_;
failedAssertImpl__stdZassertions_u85(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.align = NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.kind = 17;
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.base = (&NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T12:28:14
- Finished
2024-02-27T12:28:14
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
1.6.14 👎 FAIL
Output
Error: Command failed: nim c --gc:refc --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 temp
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(7, 10) `obj.value == 42` [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '
fatal.nim(54) sysFatal
Error: unhandled exception: options.nim(645, 14) `false` errGenerated [AssertionDefect]
IR
Compiled filesize96.10 Kb (98,408 bytes)
#define NIM_INTBITS 64
#include "nimbase.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 TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef NU8 tyEnum_TNimKind__3rC59cFdCULJbp2tHLSZMXQ;
typedef NU8 tySet_tyEnum_TNimTypeFlag__z9aX9aBGjlpDIC58y9bKcsmzA;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__3rC59cFdCULJbp2tHLSZMXQ kind;
tySet_tyEnum_TNimTypeFlag__z9aX9aBGjlpDIC58y9bKcsmzA flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__XtzEyxd2A8uwMJcYYak9c7w;
struct TNimNode {
tyEnum_TNimNodeKind__XtzEyxd2A8uwMJcYYak9c7w kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_2997)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_56)(NimStringDesc* msg);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTIanobject__mYtkcMynpviMNZYFlqg5JQ_;
extern TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(7, 10) `obj.value == 42` ", 60);
N_LIB_PRIVATE tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj__temp_14 = {{(&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_)}, ((NI) 42)}
;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr__system_2564 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr__system_2564).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr__system_2564;
framePtr__system_2564 = s;
{
if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
callDepthLimitReached__system_2997();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_2564 = (*framePtr__system_2564).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a).value = ((NI) 1);
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;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
(*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");
mutate__temp_3((&obj__temp_14));
{
if (!!((obj__temp_14.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__systemZassertions_56(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.align = NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.kind = 17;
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.base = (&NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T12:28:17
- Finished
2024-02-27T12:28:17
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
1.4.8 👎 FAIL
Output
Error: Command failed: nim c --gc:refc --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 temp
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(7, 10) `obj.value == 42` [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '
IR
Compiled filesize91.95 Kb (94,152 bytes)
#define NIM_INTBITS 64
#include "nimbase.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 TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw;
typedef struct RootObj RootObj;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
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;
NI align;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw {
RootObj Sup;
NI value;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
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, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTI__gAP7Gu59agAnSCrqKpcTiRw_;
extern TNimType NTI__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(7, 10) `obj.value == 42` ", 60);
N_LIB_PRIVATE tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw obj__bFjgGo7GZlNDqAm3QOKVYQ = {{(&NTI__gAP7Gu59agAnSCrqKpcTiRw_)}, ((NI) 42)}
;
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, 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, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a).value = ((NI) 1);
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();
tempDatInit000();
(*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");
mutate__TfI9cchAOeV9cirL3DdZtkVg((&obj__bFjgGo7GZlNDqAm3QOKVYQ));
{
if (!!((obj__bFjgGo7GZlNDqAm3QOKVYQ.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTI__gAP7Gu59agAnSCrqKpcTiRw_.size = sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.align = NIM_ALIGNOF(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.kind = 17;
NTI__gAP7Gu59agAnSCrqKpcTiRw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTI__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTI__gAP7Gu59agAnSCrqKpcTiRw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T12:28:20
- Finished
2024-02-27T12:28:20
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
1.2.18 👎 FAIL
Output
Error: Command failed: nim c --gc:refc --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 temp
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(7, 10) `obj.value == 42` [AssertionError]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '
IR
Compiled filesize91.68 Kb (93,880 bytes)
#define NIM_INTBITS 64
#include "nimbase.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 TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw;
typedef struct RootObj RootObj;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
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 NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
struct TNimNode {
tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw {
RootObj Sup;
NI value;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
N_LIB_PRIVATE N_NIMCALL(void, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
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, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTI__gAP7Gu59agAnSCrqKpcTiRw_;
extern TNimType NTI__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(7, 10) `obj.value == 42` ", 60);
N_LIB_PRIVATE tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw obj__bFjgGo7GZlNDqAm3QOKVYQ = {{(&NTI__gAP7Gu59agAnSCrqKpcTiRw_)}, ((NI) 42)}
;
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, 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, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a).value = ((NI) 1);
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();
tempDatInit000();
(*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");
mutate__TfI9cchAOeV9cirL3DdZtkVg((&obj__bFjgGo7GZlNDqAm3QOKVYQ));
{
if (!!((obj__bFjgGo7GZlNDqAm3QOKVYQ.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTI__gAP7Gu59agAnSCrqKpcTiRw_.size = sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.kind = 17;
NTI__gAP7Gu59agAnSCrqKpcTiRw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTI__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTI__gAP7Gu59agAnSCrqKpcTiRw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T12:28:22
- Finished
2024-02-27T12:28:22
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
1.0.10 👎 FAIL
Output
Error: Command failed: nim c --gc:refc --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 temp
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(7, 10) `obj.value == 42` [AssertionError]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '
IR
Compiled filesize87.07 Kb (89,160 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_AnObject__gAP7Gu59agAnSCrqKpcTiRw tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
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;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw {
RootObj Sup;
NI value;
};
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
N_NOINLINE(void, chckNil)(void* p);
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, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
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);
tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw obj__bFjgGo7GZlNDqAm3QOKVYQ;
extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
TNimType NTI__gAP7Gu59agAnSCrqKpcTiRw_;
extern TNimType NTI__rR5Bzr1D5krxoo1NcNyeMA_;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(7, 10) `obj.value == 42` ", 60);
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) { 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, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a) { nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a).value = ((NI) 1);
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) {
{
TFrame FR_; FR_.len = 0;
obj__bFjgGo7GZlNDqAm3QOKVYQ.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
}
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
chckNil((void*)(&obj__bFjgGo7GZlNDqAm3QOKVYQ));
nimZeroMem((void*)(&obj__bFjgGo7GZlNDqAm3QOKVYQ), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
obj__bFjgGo7GZlNDqAm3QOKVYQ.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
obj__bFjgGo7GZlNDqAm3QOKVYQ.value = ((NI) 42);
mutate__TfI9cchAOeV9cirL3DdZtkVg((&obj__bFjgGo7GZlNDqAm3QOKVYQ));
{
if (!!((obj__bFjgGo7GZlNDqAm3QOKVYQ.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTI__gAP7Gu59agAnSCrqKpcTiRw_.size = sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.kind = 17;
NTI__gAP7Gu59agAnSCrqKpcTiRw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTI__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTI__gAP7Gu59agAnSCrqKpcTiRw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T12:28:24
- Finished
2024-02-27T12:28:25
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
Stats
- GCC
11.4.0
- Clang
14.0.0
- NodeJS
19.1
- Created
2024-02-27T12:27:39Z
- Comments
3
- Commands
nim c --gc:refc --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 19 minutes
bisecting 7
commits at 0
commits per second
from nim.
Btw, I've realized that force-enabling injectDestructorCalls
(in genProcAux) fixes the issue, as does creating a bogus destructor for AnObject
. My currently working hypothesis is that the sink copy logic (which is embedded in injectDestructorCalls
) only gets triggered for refc when there's a destructor defined for one of the types in the proc's signature.
from nim.
🐧 Linux bisect by @gmega (contributor)
devel 👍 OK
Output
IR
Compiled filesize106.46 Kb (109,016 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_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef NU8 tyEnum_TNimKind__ClA3xuAkmIebTG0trkhp7w;
typedef NU8 tySet_tyEnum_TNimTypeFlag__lkZ7PEzlp5IUJlUpsPWkog;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p_p0, NI op_p1);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p_p0);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__ClA3xuAkmIebTG0trkhp7w kind;
tySet_tyEnum_TNimTypeFlag__lkZ7PEzlp5IUJlUpsPWkog flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
typedef NU8 tyEnum_TNimNodeKind__IIT6i6x8UigmmmGU9bo5uUw;
struct TNimNode {
tyEnum_TNimNodeKind__IIT6i6x8UigmmmGU9bo5uUw kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
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);
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u5)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* x_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u3151)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqdup___temp_u13)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* src_p0, tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* Result);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u69)(NimStringDesc* msg_p0);
static N_INLINE(void, initStackBottomWith)(void* locals_p0);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom_p0);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTIanobject__mYtkcMynpviMNZYFlqg5JQ_;
extern TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(8, 1) `obj.value == 42` ", 59);
N_LIB_PRIVATE tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj__temp_u20;
extern NIM_THREADVAR TFrame* framePtr__system_u2625;
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(void, nimZeroMem)(void* p_p0, NI size_p1) {
nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u2625 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u2625).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u2625;
framePtr__system_u2625 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u3151();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u2625 = (*framePtr__system_u2625).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* x_p0) {
nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u5)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a_p0).value = ((NI)1);
eqdestroy___temp_u3(a_p0);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqdup___temp_u13)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* src_p0, tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* Result) {
nimZeroMem((void*)Result, sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
(*Result).Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
(*Result).value = (*src_p0).value;
}
static N_INLINE(void, initStackBottomWith)(void* locals_p0) {
nimGC_setStackBottom(locals_p0);
}
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 1
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 1
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
#else
PreMain();
initStackBottomWith((void *)&inner);
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) {
{
TFrame FR_; FR_.len = 0;
obj__temp_u20.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
}
{
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ colontmpD_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
colontmpD_.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
nimZeroMem((void*)(&obj__temp_u20), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj__temp_u20.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
obj__temp_u20.value = ((NI)42);
eqdup___temp_u13((&obj__temp_u20), (&colontmpD_));
mutate__temp_u5((&colontmpD_));
{
if (!!((obj__temp_u20.value == ((NI)42)))) goto LA3_;
failedAssertImpl__stdZassertions_u69(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
eqdestroy___temp_u3((&obj__temp_u20));
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.align = NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.kind = 17;
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.base = (&NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T23:58:13
- Finished
2024-02-27T23:58:14
- Duration
stable 👍 OK
Output
IR
Compiled filesize106.44 Kb (108,992 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_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef NU8 tyEnum_TNimKind__tkzilgOTS67iC3a7h549aiw;
typedef NU8 tySet_tyEnum_TNimTypeFlag__9aI2dAe9cy2LQ7Dp9cypyl4rA;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p_p0, NI op_p1);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p_p0);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__tkzilgOTS67iC3a7h549aiw kind;
tySet_tyEnum_TNimTypeFlag__9aI2dAe9cy2LQ7Dp9cypyl4rA flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
typedef NU8 tyEnum_TNimNodeKind__wYCe8vXIm9cHBnYL2fAWT2A;
struct TNimNode {
tyEnum_TNimNodeKind__wYCe8vXIm9cHBnYL2fAWT2A kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
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);
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u5)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* x_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u3134)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqdup___temp_u13)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* src_p0, tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* Result);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u85)(NimStringDesc* msg_p0);
static N_INLINE(void, initStackBottomWith)(void* locals_p0);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom_p0);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTIanobject__mYtkcMynpviMNZYFlqg5JQ_;
extern TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(8, 1) `obj.value == 42` ", 59);
N_LIB_PRIVATE tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj__temp_u20;
extern NIM_THREADVAR TFrame* framePtr__system_u2601;
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(void, nimZeroMem)(void* p_p0, NI size_p1) {
nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u2601 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u2601).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u2601;
framePtr__system_u2601 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u3134();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u2601 = (*framePtr__system_u2601).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* x_p0) {
nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u5)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a_p0).value = ((NI)1);
eqdestroy___temp_u3(a_p0);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqdup___temp_u13)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* src_p0, tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* Result) {
nimZeroMem((void*)Result, sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
(*Result).Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
(*Result).value = (*src_p0).value;
}
static N_INLINE(void, initStackBottomWith)(void* locals_p0) {
nimGC_setStackBottom(locals_p0);
}
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 1
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 1
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
#else
PreMain();
initStackBottomWith((void *)&inner);
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) {
{
TFrame FR_; FR_.len = 0;
obj__temp_u20.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
}
{
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ colontmpD_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
colontmpD_.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
nimZeroMem((void*)(&obj__temp_u20), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj__temp_u20.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
obj__temp_u20.value = ((NI)42);
eqdup___temp_u13((&obj__temp_u20), (&colontmpD_));
mutate__temp_u5((&colontmpD_));
{
if (!!((obj__temp_u20.value == ((NI)42)))) goto LA3_;
failedAssertImpl__stdZassertions_u85(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
eqdestroy___temp_u3((&obj__temp_u20));
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.align = NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.kind = 17;
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.base = (&NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T23:58:14
- Finished
2024-02-27T23:58:14
- Duration
2.0.0 👍 OK
Output
IR
Compiled filesize106.45 Kb (109,008 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_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef NU8 tyEnum_TNimKind__gvi1epwSO1OTm5TYYpvciQ;
typedef NU8 tySet_tyEnum_TNimTypeFlag__kg8CbOmSm78f9cYZNYwXtRw;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p_p0, NI op_p1);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p_p0);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__gvi1epwSO1OTm5TYYpvciQ kind;
tySet_tyEnum_TNimTypeFlag__kg8CbOmSm78f9cYZNYwXtRw flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
typedef NU8 tyEnum_TNimNodeKind__27ptuqE7C12XXCcK2N0u8g;
struct TNimNode {
tyEnum_TNimNodeKind__27ptuqE7C12XXCcK2N0u8g kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
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);
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u5)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* x_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u3134)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqdup___temp_u13)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* src_p0, tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* Result);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u85)(NimStringDesc* msg_p0);
static N_INLINE(void, initStackBottomWith)(void* locals_p0);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom_p0);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystematsexceptionsdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTIanobject__mYtkcMynpviMNZYFlqg5JQ_;
extern TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(8, 1) `obj.value == 42` ", 59);
N_LIB_PRIVATE tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj__temp_u20;
extern NIM_THREADVAR TFrame* framePtr__system_u2601;
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(void, nimZeroMem)(void* p_p0, NI size_p1) {
nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u2601 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u2601).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u2601;
framePtr__system_u2601 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u3134();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u2601 = (*framePtr__system_u2601).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* x_p0) {
nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u5)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a_p0).value = ((NI)1);
eqdestroy___temp_u3(a_p0);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqdup___temp_u13)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* src_p0, tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* Result) {
nimZeroMem((void*)Result, sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
(*Result).Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
(*Result).value = (*src_p0).value;
}
static N_INLINE(void, initStackBottomWith)(void* locals_p0) {
nimGC_setStackBottom(locals_p0);
}
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 1
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystematsexceptionsdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot0atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 1
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
#else
PreMain();
initStackBottomWith((void *)&inner);
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) {
{
TFrame FR_; FR_.len = 0;
obj__temp_u20.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
}
{
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ colontmpD_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
colontmpD_.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
nimZeroMem((void*)(&obj__temp_u20), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj__temp_u20.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
obj__temp_u20.value = ((NI)42);
eqdup___temp_u13((&obj__temp_u20), (&colontmpD_));
mutate__temp_u5((&colontmpD_));
{
if (!!((obj__temp_u20.value == ((NI)42)))) goto LA3_;
failedAssertImpl__stdZassertions_u85(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
eqdestroy___temp_u3((&obj__temp_u20));
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.align = NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.kind = 17;
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.base = (&NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T23:58:17
- Finished
2024-02-27T23:58:17
- Duration
1.6.14 👍 OK
Output
IR
Compiled filesize96.22 Kb (98,528 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_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef NU8 tyEnum_TNimKind__3rC59cFdCULJbp2tHLSZMXQ;
typedef NU8 tySet_tyEnum_TNimTypeFlag__z9aX9aBGjlpDIC58y9bKcsmzA;
typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
struct TNimType {
NI size;
NI align;
tyEnum_TNimKind__3rC59cFdCULJbp2tHLSZMXQ kind;
tySet_tyEnum_TNimTypeFlag__z9aX9aBGjlpDIC58y9bKcsmzA flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
typedef NU8 tyEnum_TNimNodeKind__XtzEyxd2A8uwMJcYYak9c7w;
struct TNimNode {
tyEnum_TNimNodeKind__XtzEyxd2A8uwMJcYYak9c7w kind;
NI offset;
TNimType* typ;
NCSTRING name;
NI len;
TNimNode** sons;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_5)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* x);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_2997)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___temp_7)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* dest, tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* src);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_56)(NimStringDesc* msg);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTIanobject__mYtkcMynpviMNZYFlqg5JQ_;
extern TNimType NTIint__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(8, 10) `obj.value == 42` ", 60);
N_LIB_PRIVATE tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj__temp_13;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
static N_INLINE(void, nimSetMem__systemZmemory_7)(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_7(p, ((int) 0), size);
}
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr__system_2564 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr__system_2564).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr__system_2564;
framePtr__system_2564 = s;
{
if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
callDepthLimitReached__system_2997();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_2564 = (*framePtr__system_2564).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* x) {
nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_5)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a).value = ((NI) 1);
eqdestroy___temp_3(a);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___temp_7)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* dest, tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* src) {
(*dest).value = (*src).value;
}
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;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000();
initStackBottomWith((void *)&inner);
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
(*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) {
{
TFrame FR_; FR_.len = 0;
obj__temp_13.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
}
{
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ colontmpD_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
colontmpD_.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
nimZeroMem((void*)(&obj__temp_13), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj__temp_13.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
obj__temp_13.value = ((NI) 42);
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
colontmpD_.Sup.m_type = (&NTIanobject__mYtkcMynpviMNZYFlqg5JQ_);
eqcopy___temp_7((&colontmpD_), (&obj__temp_13));
mutate__temp_5((&colontmpD_));
{
if (!!((obj__temp_13.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__systemZassertions_56(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
eqdestroy___temp_3((&obj__temp_13));
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.align = NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.kind = 17;
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.base = (&NTIrootobj__ytyiCJqK439aF9cIibuRVpAg_);
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTIint__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTIanobject__mYtkcMynpviMNZYFlqg5JQ_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T23:58:19
- Finished
2024-02-27T23:58:20
- Duration
1.4.8 👍 OK
Output
IR
Compiled filesize92.09 Kb (94,304 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_AnObject__gAP7Gu59agAnSCrqKpcTiRw tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
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;
NI align;
tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
TNimType* base;
TNimNode* node;
void* finalizer;
tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw {
RootObj Sup;
NI value;
};
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
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, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___I88kp5RIfy39bkJAhsRaJYg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* x);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___dLT8FhygADjcDqvvBkn0Aw)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* dest, tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* src);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
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, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTI__gAP7Gu59agAnSCrqKpcTiRw_;
extern TNimType NTI__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "/home/runner/work/Nim/Nim/temp.nim(8, 10) `obj.value == 42` ", 60);
N_LIB_PRIVATE tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw obj__bFjgGo7GZlNDqAm3QOKVYQ;
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, eqdestroy___I88kp5RIfy39bkJAhsRaJYg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* x) {
nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a).value = ((NI) 1);
eqdestroy___I88kp5RIfy39bkJAhsRaJYg(a);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___dLT8FhygADjcDqvvBkn0Aw)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* dest, tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* src) {
(*dest).value = (*src).value;
}
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();
tempDatInit000();
(*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) {
{
TFrame FR_; FR_.len = 0;
obj__bFjgGo7GZlNDqAm3QOKVYQ.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
}
{
tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw colontmpD_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
colontmpD_.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
nimZeroMem((void*)(&obj__bFjgGo7GZlNDqAm3QOKVYQ), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
obj__bFjgGo7GZlNDqAm3QOKVYQ.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
obj__bFjgGo7GZlNDqAm3QOKVYQ.value = ((NI) 42);
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
colontmpD_.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
eqcopy___dLT8FhygADjcDqvvBkn0Aw((&colontmpD_), (&obj__bFjgGo7GZlNDqAm3QOKVYQ));
mutate__TfI9cchAOeV9cirL3DdZtkVg((&colontmpD_));
{
if (!!((obj__bFjgGo7GZlNDqAm3QOKVYQ.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
}
LA3_: ;
eqdestroy___I88kp5RIfy39bkJAhsRaJYg((&obj__bFjgGo7GZlNDqAm3QOKVYQ));
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTI__gAP7Gu59agAnSCrqKpcTiRw_.size = sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.align = NIM_ALIGNOF(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.kind = 17;
NTI__gAP7Gu59agAnSCrqKpcTiRw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTI__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTI__gAP7Gu59agAnSCrqKpcTiRw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T23:58:22
- Finished
2024-02-27T23:58:23
- Duration
1.2.18 👍 OK
Output
IR
Compiled filesize92.27 Kb (94,480 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#include <setjmp.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_AnObject__gAP7Gu59agAnSCrqKpcTiRw tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Exception Exception;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
typedef struct TSafePoint TSafePoint;
typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
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;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw {
RootObj Sup;
NI value;
};
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct Exception {
RootObj Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
Exception* up;
};
typedef long tyArray__TcvIiMAJvcwzNLsZkfnFnQ[25];
struct TSafePoint {
TSafePoint* prev;
NI status;
jmp_buf context;
};
struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
NCSTRING procname;
NI line;
NCSTRING filename;
};
struct tySequence__uB9b75OUPRENsBAu4AnoePA {
TGenericSeq Sup;
tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
};
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_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
static N_INLINE(void, popSafePoint)(void);
static N_INLINE(TFrame*, getFrame)(void);
static N_INLINE(void, setFrame)(TFrame* s);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___I88kp5RIfy39bkJAhsRaJYg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* x);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimLeaveFinally)(void);
N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___dLT8FhygADjcDqvvBkn0Aw)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* dest, tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* src);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
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, tempDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
N_LIB_PRIVATE TNimType NTI__gAP7Gu59agAnSCrqKpcTiRw_;
extern TNimType NTI__rR5Bzr1D5krxoo1NcNyeMA_;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_3, "/home/runner/work/Nim/Nim/temp.nim(8, 10) `obj.value == 42` ", 60);
N_LIB_PRIVATE tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw obj__bFjgGo7GZlNDqAm3QOKVYQ;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
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, pushSafePoint)(TSafePoint* s) {
(*s).prev = excHandler__rqLlY5bs9atDw2OXYqJEn5g;
excHandler__rqLlY5bs9atDw2OXYqJEn5g = s;
}
static N_INLINE(void, popSafePoint)(void) {
excHandler__rqLlY5bs9atDw2OXYqJEn5g = (*excHandler__rqLlY5bs9atDw2OXYqJEn5g).prev;
}
static N_INLINE(TFrame*, getFrame)(void) {
TFrame* result;
result = (TFrame*)0;
result = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
return result;
}
static N_INLINE(void, setFrame)(TFrame* s) {
framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
}
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, eqdestroy___I88kp5RIfy39bkJAhsRaJYg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* x) {
nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a) {
TSafePoint TM__SRd76hP9cMfCzdUO857UhQQ_2;
TFrame* _nimCurFrame;
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
_nimCurFrame = getFrame();
pushSafePoint(&TM__SRd76hP9cMfCzdUO857UhQQ_2);
TM__SRd76hP9cMfCzdUO857UhQQ_2.status = setjmp(TM__SRd76hP9cMfCzdUO857UhQQ_2.context);
if (TM__SRd76hP9cMfCzdUO857UhQQ_2.status == 0) {
(*a).value = ((NI) 1);
popSafePoint();
}
else {
popSafePoint();
setFrame(_nimCurFrame);
}
{
eqdestroy___I88kp5RIfy39bkJAhsRaJYg(a);
if (TM__SRd76hP9cMfCzdUO857UhQQ_2.status != 0) nimLeaveFinally();
}
if (TM__SRd76hP9cMfCzdUO857UhQQ_2.status != 0) reraiseException();
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqcopy___dLT8FhygADjcDqvvBkn0Aw)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* dest, tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* src) {
(*dest).value = (*src).value;
}
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();
tempDatInit000();
(*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) {
{
TFrame FR_; FR_.len = 0;
obj__bFjgGo7GZlNDqAm3QOKVYQ.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
}
{
tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw colontmpD_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
colontmpD_.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
chckNil((void*)(&obj__bFjgGo7GZlNDqAm3QOKVYQ));
nimZeroMem((void*)(&obj__bFjgGo7GZlNDqAm3QOKVYQ), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
obj__bFjgGo7GZlNDqAm3QOKVYQ.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
obj__bFjgGo7GZlNDqAm3QOKVYQ.value = ((NI) 42);
chckNil((void*)(&colontmpD_));
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
colontmpD_.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
eqcopy___dLT8FhygADjcDqvvBkn0Aw((&colontmpD_), (&obj__bFjgGo7GZlNDqAm3QOKVYQ));
mutate__TfI9cchAOeV9cirL3DdZtkVg((&colontmpD_));
{
if (!!((obj__bFjgGo7GZlNDqAm3QOKVYQ.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_3));
}
LA3_: ;
eqdestroy___I88kp5RIfy39bkJAhsRaJYg((&obj__bFjgGo7GZlNDqAm3QOKVYQ));
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTI__gAP7Gu59agAnSCrqKpcTiRw_.size = sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.kind = 17;
NTI__gAP7Gu59agAnSCrqKpcTiRw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTI__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTI__gAP7Gu59agAnSCrqKpcTiRw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T23:58:25
- Finished
2024-02-27T23:58:25
- Duration
1.0.10 👍 OK
Output
IR
Compiled filesize91.83 Kb (94,032 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#include <setjmp.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_AnObject__gAP7Gu59agAnSCrqKpcTiRw tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct Exception Exception;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
typedef struct TSafePoint TSafePoint;
typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
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;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw {
RootObj Sup;
NI value;
};
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;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct Exception {
RootObj Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
NU raiseId;
Exception* up;
};
typedef long tyArray__TcvIiMAJvcwzNLsZkfnFnQ[25];
typedef struct {
N_NIMCALL_PTR(NIM_BOOL, ClP_0) (Exception* e, void* ClE_0);
void* ClE_0;
} tyProc__NT9bSe2DDkjdtx7j9aov2Z6g;
struct TSafePoint {
TSafePoint* prev;
NI status;
jmp_buf context;
NIM_BOOL hasRaiseAction;
tyProc__NT9bSe2DDkjdtx7j9aov2Z6g raiseAction;
};
struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
NCSTRING procname;
NI line;
NCSTRING filename;
};
struct tySequence__uB9b75OUPRENsBAu4AnoePA {
TGenericSeq Sup;
tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
};
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___dLT8FhygADjcDqvvBkn0Aw)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* dest, tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* src);
N_LIB_PRIVATE N_NIMCALL(void, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a);
static N_INLINE(void, popSafePoint)(void);
static N_INLINE(TFrame*, getFrame)(void);
static N_INLINE(void, setFrame)(TFrame* s);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___I88kp5RIfy39bkJAhsRaJYg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* x);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_NIMCALL(void, reraiseException)(void);
N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, eq___dLT8FhygADjcDqvvBkn0Aw_2)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* dest, tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* src);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
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);
tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw obj__bFjgGo7GZlNDqAm3QOKVYQ;
extern TNimType NTI__ytyiCJqK439aF9cIibuRVpAg_;
TNimType NTI__gAP7Gu59agAnSCrqKpcTiRw_;
extern TNimType NTI__rR5Bzr1D5krxoo1NcNyeMA_;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
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 tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw TM__SRd76hP9cMfCzdUO857UhQQ_3 = {{(&NTI__gAP7Gu59agAnSCrqKpcTiRw_)}, ((NI) 42)};
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_5, "/home/runner/work/Nim/Nim/temp.nim(8, 10) `obj.value == 42` ", 60);
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, pushSafePoint)(TSafePoint* s) { (*s).hasRaiseAction = NIM_FALSE;
(*s).prev = excHandler__rqLlY5bs9atDw2OXYqJEn5g;
excHandler__rqLlY5bs9atDw2OXYqJEn5g = s;
}
N_LIB_PRIVATE N_NIMCALL(void, eqsink___dLT8FhygADjcDqvvBkn0Aw)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* dest, tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* src) { (*dest).value = (*src).value;
}
static N_INLINE(void, popSafePoint)(void) { excHandler__rqLlY5bs9atDw2OXYqJEn5g = (*excHandler__rqLlY5bs9atDw2OXYqJEn5g).prev;
}
static N_INLINE(TFrame*, getFrame)(void) { TFrame* result;
result = (TFrame*)0;
result = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
return result;
}
static N_INLINE(void, setFrame)(TFrame* s) { framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
}
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, eqdestroy___I88kp5RIfy39bkJAhsRaJYg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* x) { nimfr_("=destroy", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a) { TSafePoint TM__SRd76hP9cMfCzdUO857UhQQ_4;
TFrame* _nimCurFrame;
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
_nimCurFrame = getFrame();
pushSafePoint(&TM__SRd76hP9cMfCzdUO857UhQQ_4);
TM__SRd76hP9cMfCzdUO857UhQQ_4.status = setjmp(TM__SRd76hP9cMfCzdUO857UhQQ_4.context);
if (TM__SRd76hP9cMfCzdUO857UhQQ_4.status == 0) {
(*a).value = ((NI) 1);
popSafePoint();
}
else {
popSafePoint();
setFrame(_nimCurFrame);
}
{
eqdestroy___I88kp5RIfy39bkJAhsRaJYg(a);
}
if (TM__SRd76hP9cMfCzdUO857UhQQ_4.status != 0) reraiseException();
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eq___dLT8FhygADjcDqvvBkn0Aw_2)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* dest, tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* src) { (*dest).value = (*src).value;
}
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) {
{
TFrame FR_; FR_.len = 0;
obj__bFjgGo7GZlNDqAm3QOKVYQ.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
}
{
tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw colontmpD_;
TSafePoint TM__SRd76hP9cMfCzdUO857UhQQ_2;
TFrame* _nimCurFrame;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
_nimCurFrame = getFrame();
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
colontmpD_.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
pushSafePoint(&TM__SRd76hP9cMfCzdUO857UhQQ_2);
TM__SRd76hP9cMfCzdUO857UhQQ_2.status = setjmp(TM__SRd76hP9cMfCzdUO857UhQQ_2.context);
if (TM__SRd76hP9cMfCzdUO857UhQQ_2.status == 0) {
eqsink___dLT8FhygADjcDqvvBkn0Aw((&obj__bFjgGo7GZlNDqAm3QOKVYQ), (&TM__SRd76hP9cMfCzdUO857UhQQ_3));
chckNil((void*)(&colontmpD_));
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
colontmpD_.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
eq___dLT8FhygADjcDqvvBkn0Aw_2((&colontmpD_), (&obj__bFjgGo7GZlNDqAm3QOKVYQ));
mutate__TfI9cchAOeV9cirL3DdZtkVg((&colontmpD_));
{
if (!!((obj__bFjgGo7GZlNDqAm3QOKVYQ.value == ((NI) 42)))) goto LA4_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_5));
}
LA4_: ;
popSafePoint();
}
else {
popSafePoint();
setFrame(_nimCurFrame);
}
{
}
if (TM__SRd76hP9cMfCzdUO857UhQQ_2.status != 0) reraiseException();
eqdestroy___I88kp5RIfy39bkJAhsRaJYg((&obj__bFjgGo7GZlNDqAm3QOKVYQ));
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
static TNimNode TM__SRd76hP9cMfCzdUO857UhQQ_0[1];
NTI__gAP7Gu59agAnSCrqKpcTiRw_.size = sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.kind = 17;
NTI__gAP7Gu59agAnSCrqKpcTiRw_.base = (&NTI__ytyiCJqK439aF9cIibuRVpAg_);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.flags = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].kind = 1;
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].offset = offsetof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw, value);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].typ = (&NTI__rR5Bzr1D5krxoo1NcNyeMA_);
TM__SRd76hP9cMfCzdUO857UhQQ_0[0].name = "value";
NTI__gAP7Gu59agAnSCrqKpcTiRw_.node = &TM__SRd76hP9cMfCzdUO857UhQQ_0[0];
}
Stats
- Started
2024-02-27T23:58:27
- Finished
2024-02-27T23:58:27
- Duration
Stats
- GCC
11.4.0
- Clang
14.0.0
- NodeJS
19.1
- Created
2024-02-27T23:57:45Z
- Comments
6
- Commands
nim c --gc:refc --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 17 minutes
bisecting 7
commits at 0
commits per second
from nim.
!nim c --gc:refc
type AnObject = object of RootObj value*: int proc `=destroy`(x: var AnObject) = discard proc mutate(a: sink AnObject) = a.value = 1 var obj = AnObject(value: 42) mutate(obj) doAssert obj.value == 42
@gmega oh odd, adding a destructor for the test object fixes it? Hmmm, maybe it'll be an easy fix of triggering whatever logic gets triggered when there's a destructor.
from nim.
@gmega oh odd, adding a destructor for the test object fixes it? Hmmm, maybe it'll be an easy fix of triggering whatever logic gets triggered when there's a destructor.
Well, either that or forcing injectDestructorCalls
, which I think is the same path. I'm not entirely sure what an acceptable solution would be here as that logic that handles sink args is intertwined with injection of destructors. If it's just a matter of triggering it, then I suppose adding a weaker condition (or no condition at all) to injectDestructorCalls
(e.g. something that checks if the proc has a sink arg) would be enough.
from nim.
🐧 Linux bisect by @ringabout (member)
devel 👎 FAIL
Output
Error: Command failed: nim c --gc:arc -d:nimArcDebug -d:nimArcIds --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
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-#devel/lib/std/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-#devel/lib/std/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-#devel/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(9, 3) `obj.value == 42` [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp'
assertions.nim(34) raiseAssert
Error: unhandled exception: errGenerated [AssertionDefect]
IR
Compiled filesize89.39 Kb (91,536 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_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
void* destructor;
NI size;
NI16 align;
NI16 depth;
NU32* display;
NCSTRING name;
void* traceImpl;
void* typeInfoV1;
NI flags;
void* vTable[SEQ_DECL_SIZE];
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u27)(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, failedAssertImpl__stdZassertions_u219)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4172)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__mYtkcMynpviMNZYFlqg5JQ_;
static const struct {
NI cap; NIM_CHAR data[59+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_3 = { 59 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(7, 3) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_4 = {59, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_3};
static const struct {
NI cap; NIM_CHAR data[59+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_5 = { 59 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(9, 3) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_6 = {59, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_5};
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u3982;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_2[2] = {3701606400, 2338615296};
N_LIB_PRIVATE TNimTypeV2 NTIv2__mYtkcMynpviMNZYFlqg5JQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ), .align = (NI16) NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_2, .traceImpl = (void*)NIM_NIL, .flags = 0};
extern NIM_THREADVAR TFrame* framePtr__system_u2653;
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_u3982);
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_u2653 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u2653).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u2653;
framePtr__system_u2653 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u4172();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u2653 = (*framePtr__system_u2653).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a_p0).value = ((NI)1);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u27)(void) {
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj;
NIM_BOOL* nimErr_;
nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
obj.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
obj.value = ((NI)42);
{
if (!!((obj.value == ((NI)42)))) goto LA3_;
failedAssertImpl__stdZassertions_u219(TM__SRd76hP9cMfCzdUO857UhQQ_4);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA3_: ;
mutate__temp_u3((&obj));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
{
if (!!((obj.value == ((NI)42)))) goto LA7_;
failedAssertImpl__stdZassertions_u219(TM__SRd76hP9cMfCzdUO857UhQQ_6);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA7_: ;
}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;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_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();
foo__temp_u27();
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
Stats
- Started
2024-02-28T12:24:51
- Finished
2024-02-28T12:24:52
- Duration
1 minutes
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
stable 👎 FAIL
Output
Error: Command failed: nim c --gc:arc -d:nimArcDebug -d:nimArcIds --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
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/std/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/std/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(9, 3) `obj.value == 42` [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp'
assertions.nim(34) raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errGenerated [AssertionDefect]
IR
Compiled filesize87.41 Kb (89,512 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_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
void* destructor;
NI size;
NI16 align;
NI16 depth;
NU32* display;
NCSTRING name;
void* traceImpl;
void* typeInfoV1;
NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u27)(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, failedAssertImpl__stdZassertions_u266)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4173)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__mYtkcMynpviMNZYFlqg5JQ_;
static const struct {
NI cap; NIM_CHAR data[59+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_3 = { 59 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(7, 3) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_4 = {59, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_3};
static const struct {
NI cap; NIM_CHAR data[59+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_5 = { 59 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(9, 3) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_6 = {59, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_5};
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u3981;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_2[2] = {3701606400, 2338615296};
N_LIB_PRIVATE TNimTypeV2 NTIv2__mYtkcMynpviMNZYFlqg5JQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ), .align = (NI16) NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_2, .traceImpl = (void*)NIM_NIL, .flags = 0};
extern NIM_THREADVAR TFrame* framePtr__system_u3619;
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_u3981);
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_u3619 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u3619).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u3619;
framePtr__system_u3619 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u4173();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u3619 = (*framePtr__system_u3619).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a_p0).value = ((NI)1);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u27)(void) {
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj;
NIM_BOOL* nimErr_;
nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
obj.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
obj.value = ((NI)42);
{
if (!!((obj.value == ((NI)42)))) goto LA3_;
failedAssertImpl__stdZassertions_u266(TM__SRd76hP9cMfCzdUO857UhQQ_4);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA3_: ;
mutate__temp_u3((&obj));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
{
if (!!((obj.value == ((NI)42)))) goto LA7_;
failedAssertImpl__stdZassertions_u266(TM__SRd76hP9cMfCzdUO857UhQQ_6);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA7_: ;
}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;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_Init000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot2atslibatssystemdotnim_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();
foo__temp_u27();
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
Stats
- Started
2024-02-28T12:24:53
- Finished
2024-02-28T12:24:54
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
2.0.0 👎 FAIL
Output
Error: Command failed: nim c --gc:arc -d:nimArcDebug -d:nimArcIds --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
command line(1, 2) Warning: `gc:option` is deprecated; use `mm:option` instead [Deprecated]
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim foo
/home/runner/.choosenim/toolchains/nim-2.0.0/lib/std/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-2.0.0/lib/std/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-2.0.0/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(9, 3) `obj.value == 42` [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp'
assertions.nim(34) raiseAssert
Error: unhandled exception: options.nim(664, 5) `false` errGenerated [AssertionDefect]
IR
Compiled filesize87.31 Kb (89,408 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_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
void* destructor;
NI size;
NI16 align;
NI16 depth;
NU32* display;
NCSTRING name;
void* traceImpl;
void* typeInfoV1;
NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u27)(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, failedAssertImpl__stdZassertions_u266)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4159)(void);
static N_INLINE(void, popFrame)(void);
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);
N_LIB_PRIVATE TNimTypeV2 NTIv2__mYtkcMynpviMNZYFlqg5JQ_;
static const struct {
NI cap; NIM_CHAR data[59+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_3 = { 59 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(7, 3) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_4 = {59, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_3};
static const struct {
NI cap; NIM_CHAR data[59+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_5 = { 59 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(9, 3) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_6 = {59, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_5};
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u3967;
static NIM_CONST NU32 TM__SRd76hP9cMfCzdUO857UhQQ_2[2] = {3701606400, 2338615296};
N_LIB_PRIVATE TNimTypeV2 NTIv2__mYtkcMynpviMNZYFlqg5JQ_ = {.destructor = (void*)NIM_NIL, .size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ), .align = (NI16) NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ), .depth = 1, .display = TM__SRd76hP9cMfCzdUO857UhQQ_2, .traceImpl = (void*)NIM_NIL, .flags = 0};
extern NIM_THREADVAR TFrame* framePtr__system_u3605;
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_u3967);
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_u3605 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u3605).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u3605;
framePtr__system_u3605 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u4159();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u3605 = (*framePtr__system_u3605).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_u3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a_p0) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a_p0).value = ((NI)1);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_u27)(void) {
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj;
NIM_BOOL* nimErr_;
nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
obj.value = ((NI)42);
{
if (!!((obj.value == ((NI)42)))) goto LA3_;
failedAssertImpl__stdZassertions_u266(TM__SRd76hP9cMfCzdUO857UhQQ_4);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA3_: ;
mutate__temp_u3((&obj));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
{
if (!!((obj.value == ((NI)42)))) goto LA7_;
failedAssertImpl__stdZassertions_u266(TM__SRd76hP9cMfCzdUO857UhQQ_6);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA7_: ;
}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();
foo__temp_u27();
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
Stats
- Started
2024-02-28T12:24:57
- Finished
2024-02-28T12:24:57
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
1.6.14 👍 OK
Output
IR
Compiled filesize81.53 Kb (83,488 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_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
void* destructor;
NI size;
NI align;
NCSTRING name;
void* traceImpl;
void* typeInfoV1;
NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_18)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_53)(NimStringV2 msg);
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_4031)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__mYtkcMynpviMNZYFlqg5JQ_;
static const struct {
NI cap; NIM_CHAR data[60+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 60 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(7, 12) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {60, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[60+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 60 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(9, 12) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {60, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
extern NIM_BOOL nimInErrorMode__system_3882;
extern TFrame* framePtr__system_3557;
extern TFrame* framePtr__system_3557;
extern TFrame* framePtr__system_3557;
extern TFrame* framePtr__system_3557;
extern TFrame* framePtr__system_3557;
extern TFrame* framePtr__system_3557;
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
void* T1_;
T1_ = (void*)0;
T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
NIM_BOOL* result;
result = (NIM_BOOL*)0;
result = (&nimInErrorMode__system_3882);
return result;
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
nimSetMem__systemZmemory_7(p, ((int) 0), size);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr__system_3557 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr__system_3557).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr__system_3557;
framePtr__system_3557 = s;
{
if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
callDepthLimitReached__system_4031();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_3557 = (*framePtr__system_3557).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a).value = ((NI) 1);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_18)(void) {
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ colontmpD_;
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj;
NIM_BOOL* nimErr_;
nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
colontmpD_.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
obj.value = ((NI) 42);
{
if (!!((obj.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__systemZassertions_53(TM__SRd76hP9cMfCzdUO857UhQQ_3);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA3_: ;
colontmpD_ = obj;
mutate__temp_3((&colontmpD_));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
{
if (!!((obj.value == ((NI) 42)))) goto LA7_;
failedAssertImpl__systemZassertions_53(TM__SRd76hP9cMfCzdUO857UhQQ_5);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA7_: ;
}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) {
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
PreMainInner();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
PreMain();
NimMainInner();
}
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();
foo__temp_18();
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
NTIv2__mYtkcMynpviMNZYFlqg5JQ_.destructor = (void*)NIM_NIL; NTIv2__mYtkcMynpviMNZYFlqg5JQ_.size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ); NTIv2__mYtkcMynpviMNZYFlqg5JQ_.align = NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ); NTIv2__mYtkcMynpviMNZYFlqg5JQ_.name = "|nim.temp.AnObject|RootObj|";
; NTIv2__mYtkcMynpviMNZYFlqg5JQ_.traceImpl = (void*)NIM_NIL; NTIv2__mYtkcMynpviMNZYFlqg5JQ_.flags = 0;}
Stats
- Started
2024-02-28T12:25:00
- Finished
2024-02-28T12:25:00
- Duration
1.4.8 👎 FAIL
Output
Error: Command failed: nim c --gc:arc -d:nimArcDebug -d:nimArcIds --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/.choosenim/toolchains/nim-1.4.8/lib/system/bitmasks.nim(13, 3) Error: redefinition of 'PageShift'; previous declaration here: /home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/bitmasks.nim(13, 3)
IR
Compiled filesize81.53 Kb (83,488 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_AnObject__mYtkcMynpviMNZYFlqg5JQ tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ;
typedef struct RootObj RootObj;
typedef struct TNimTypeV2 TNimTypeV2;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimTypeV2 {
void* destructor;
NI size;
NI align;
NCSTRING name;
void* traceImpl;
void* typeInfoV1;
NI flags;
};
struct RootObj {
TNimTypeV2* m_type;
};
struct tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ {
RootObj Sup;
NI value;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_18)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__systemZassertions_53)(NimStringV2 msg);
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_4031)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
N_LIB_PRIVATE TNimTypeV2 NTIv2__mYtkcMynpviMNZYFlqg5JQ_;
static const struct {
NI cap; NIM_CHAR data[60+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 60 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(7, 12) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {60, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[60+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 60 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(9, 12) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {60, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
extern NIM_BOOL nimInErrorMode__system_3882;
extern TFrame* framePtr__system_3557;
extern TFrame* framePtr__system_3557;
extern TFrame* framePtr__system_3557;
extern TFrame* framePtr__system_3557;
extern TFrame* framePtr__system_3557;
extern TFrame* framePtr__system_3557;
static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
void* T1_;
T1_ = (void*)0;
T1_ = memset(a, v, ((size_t) (size)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
NIM_BOOL* result;
result = (NIM_BOOL*)0;
result = (&nimInErrorMode__system_3882);
return result;
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
nimSetMem__systemZmemory_7(p, ((int) 0), size);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr__system_3557 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr__system_3557).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr__system_3557;
framePtr__system_3557 = s;
{
if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
callDepthLimitReached__system_4031();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_3557 = (*framePtr__system_3557).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, mutate__temp_3)(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ* a) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a).value = ((NI) 1);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, foo__temp_18)(void) {
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ colontmpD_;
tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ obj;
NIM_BOOL* nimErr_;
nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
colontmpD_.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ));
obj.Sup.m_type = (&NTIv2__mYtkcMynpviMNZYFlqg5JQ_);
obj.value = ((NI) 42);
{
if (!!((obj.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__systemZassertions_53(TM__SRd76hP9cMfCzdUO857UhQQ_3);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA3_: ;
colontmpD_ = obj;
mutate__temp_3((&colontmpD_));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
{
if (!!((obj.value == ((NI) 42)))) goto LA7_;
failedAssertImpl__systemZassertions_53(TM__SRd76hP9cMfCzdUO857UhQQ_5);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA7_: ;
}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) {
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000();
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000();
atmtempdotnim_DatInit000();
PreMainInner();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
PreMain();
NimMainInner();
}
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();
foo__temp_18();
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, atmtempdotnim_DatInit000)(void) {
NTIv2__mYtkcMynpviMNZYFlqg5JQ_.destructor = (void*)NIM_NIL; NTIv2__mYtkcMynpviMNZYFlqg5JQ_.size = sizeof(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ); NTIv2__mYtkcMynpviMNZYFlqg5JQ_.align = NIM_ALIGNOF(tyObject_AnObject__mYtkcMynpviMNZYFlqg5JQ); NTIv2__mYtkcMynpviMNZYFlqg5JQ_.name = "|nim.temp.AnObject|RootObj|";
; NTIv2__mYtkcMynpviMNZYFlqg5JQ_.traceImpl = (void*)NIM_NIL; NTIv2__mYtkcMynpviMNZYFlqg5JQ_.flags = 0;}
Stats
- Started
2024-02-28T12:25:02
- Finished
2024-02-28T12:25:02
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
1.2.18 👍 OK
Output
IR
Compiled filesize73.42 Kb (75,184 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_AnObject__gAP7Gu59agAnSCrqKpcTiRw tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimType {
void* destructor;
NI size;
NCSTRING name;
void* traceImpl;
void* disposeImpl;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw {
RootObj Sup;
NI value;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringV2 msg);
N_LIB_PRIVATE N_NIMCALL(void, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
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);
N_LIB_PRIVATE TNimType NTI__gAP7Gu59agAnSCrqKpcTiRw_;
static const struct {
NI cap; NIM_CHAR data[60+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 60 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(7, 12) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {60, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[60+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 60 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(9, 12) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {60, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
extern NIM_BOOL nimInErrorMode__759bT87luu8XGcbkw13FUjA;
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(NIM_BOOL*, nimErrorFlag)(void) {
NIM_BOOL* result;
result = (NIM_BOOL*)0;
result = (&nimInErrorMode__759bT87luu8XGcbkw13FUjA);
return result;
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
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, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a).value = ((NI) 1);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void) {
tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw colontmpD_;
tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw obj;
NIM_BOOL* nimErr_;
nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
colontmpD_.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
obj.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
chckNil((void*)(&obj));
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
obj.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
obj.value = ((NI) 42);
{
if (!!((obj.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(TM__SRd76hP9cMfCzdUO857UhQQ_3);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA3_: ;
colontmpD_ = obj;
mutate__TfI9cchAOeV9cirL3DdZtkVg((&colontmpD_));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
{
if (!!((obj.value == ((NI) 42)))) goto LA7_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(TM__SRd76hP9cMfCzdUO857UhQQ_5);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA7_: ;
}BeforeRet_: ;
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* 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();
tempDatInit000();
(*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) {
{
NIM_BOOL* nimErr_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
foo__EzBZaa239as9bFx8yeHDoTOw();
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
NTI__gAP7Gu59agAnSCrqKpcTiRw_.destructor = (void*)NIM_NIL; NTI__gAP7Gu59agAnSCrqKpcTiRw_.size = sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.name = "|nim.temp.AnObject|RootObj|";
NTI__gAP7Gu59agAnSCrqKpcTiRw_.traceImpl = (void*)NIM_NIL;
NTI__gAP7Gu59agAnSCrqKpcTiRw_.disposeImpl = (void*)NIM_NIL;
}
Stats
- Started
2024-02-28T12:25:04
- Finished
2024-02-28T12:25:05
- Duration
1.0.10 👎 FAIL
Output
Error: Command failed: nim c --gc:arc -d:nimArcDebug -d:nimArcIds --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
command line(1, 2) Error: 'none', 'boehm' or 'refc' expected, but 'arc' found
IR
Compiled filesize73.42 Kb (75,184 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_AnObject__gAP7Gu59agAnSCrqKpcTiRw tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct TNimType {
void* destructor;
NI size;
NCSTRING name;
void* traceImpl;
void* disposeImpl;
};
struct RootObj {
TNimType* m_type;
};
struct tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw {
RootObj Sup;
NI value;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NOINLINE(void, chckNil)(void* p);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringV2 msg);
N_LIB_PRIVATE N_NIMCALL(void, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
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);
N_LIB_PRIVATE TNimType NTI__gAP7Gu59agAnSCrqKpcTiRw_;
static const struct {
NI cap; NIM_CHAR data[60+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 60 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(7, 12) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {60, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[60+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 60 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(9, 12) `obj.value == 42` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {60, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
extern NIM_BOOL nimInErrorMode__759bT87luu8XGcbkw13FUjA;
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(NIM_BOOL*, nimErrorFlag)(void) {
NIM_BOOL* result;
result = (NIM_BOOL*)0;
result = (&nimInErrorMode__759bT87luu8XGcbkw13FUjA);
return result;
}
static N_INLINE(void, nimZeroMem)(void* p, NI size) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory(p, ((int) 0), size);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
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, mutate__TfI9cchAOeV9cirL3DdZtkVg)(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw* a) {
nimfr_("mutate", "/home/runner/work/Nim/Nim/temp.nim");
(*a).value = ((NI) 1);
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, foo__EzBZaa239as9bFx8yeHDoTOw)(void) {
tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw colontmpD_;
tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw obj;
NIM_BOOL* nimErr_;
nimfr_("foo", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
nimZeroMem((void*)(&colontmpD_), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
colontmpD_.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
obj.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
chckNil((void*)(&obj));
nimZeroMem((void*)(&obj), sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw));
obj.Sup.m_type = (&NTI__gAP7Gu59agAnSCrqKpcTiRw_);
obj.value = ((NI) 42);
{
if (!!((obj.value == ((NI) 42)))) goto LA3_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(TM__SRd76hP9cMfCzdUO857UhQQ_3);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA3_: ;
colontmpD_ = obj;
mutate__TfI9cchAOeV9cirL3DdZtkVg((&colontmpD_));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
{
if (!!((obj.value == ((NI) 42)))) goto LA7_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(TM__SRd76hP9cMfCzdUO857UhQQ_5);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}
LA7_: ;
}BeforeRet_: ;
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* 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();
tempDatInit000();
(*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) {
{
NIM_BOOL* nimErr_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
foo__EzBZaa239as9bFx8yeHDoTOw();
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
N_LIB_PRIVATE N_NIMCALL(void, tempDatInit000)(void) {
NTI__gAP7Gu59agAnSCrqKpcTiRw_.destructor = (void*)NIM_NIL; NTI__gAP7Gu59agAnSCrqKpcTiRw_.size = sizeof(tyObject_AnObject__gAP7Gu59agAnSCrqKpcTiRw);
NTI__gAP7Gu59agAnSCrqKpcTiRw_.name = "|nim.temp.AnObject|RootObj|";
NTI__gAP7Gu59agAnSCrqKpcTiRw_.traceImpl = (void*)NIM_NIL;
NTI__gAP7Gu59agAnSCrqKpcTiRw_.disposeImpl = (void*)NIM_NIL;
}
Stats
- Started
2024-02-28T12:25:07
- Finished
2024-02-28T12:25:07
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("AnObject")
),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
nnkOfInherit.newTree(
newIdentNode("RootObj")
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("value")
),
newIdentNode("int"),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("mutate"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("AnObject")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("a"),
newIdentNode("value")
),
newLit(1)
)
)
),
nnkProcDef.newTree(
newIdentNode("foo"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("obj"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("AnObject"),
nnkExprColonExpr.newTree(
newIdentNode("value"),
newLit(42)
)
)
)
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
),
nnkCall.newTree(
newIdentNode("mutate"),
newIdentNode("obj")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("obj"),
newIdentNode("value")
),
newLit(42)
)
)
)
),
nnkCall.newTree(
newIdentNode("foo")
)
)
#8d47bf182 ➡️ 🐛
Diagnostics
andreas rumpf introduced a bug at 2022-10-01 16:46:51 +0200
on commit #8d47bf182 with message:
new move analyser2 (#20471)
* produce better code for closure environment creation
* new 'first write' analysis;
* scope based move analyser
* code cleanup
Co-authored-by: ringabout <[email protected]>
The bug is in the files:
compiler/aliasanalysis.nim
compiler/ast.nim
compiler/ccgcalls.nim
compiler/dfa.nim
compiler/injectdestructors.nim
compiler/int128.nim
compiler/lambdalifting.nim
compiler/parampatterns.nim
compiler/sempass2.nim
compiler/transf.nim
lib/pure/collections/sequtils.nim
tests/arc/tmovebug.nim
tests/arc/topt_no_cursor.nim
tests/destructor/t16607.nim
tests/destructor/tbintree2.nim
tests/destructor/tmove_objconstr.nim
tests/destructor/tprevent_assign2.nim
tests/destructor/tprevent_assign3.nim
tests/destructor/tuse_ownedref_after_move.nim
The bug can be in the commits:
(Diagnostics sometimes off-by-one).
Stats
- GCC
11.4.0
- Clang
14.0.0
- NodeJS
19.1
- Created
2024-02-28T12:24:24Z
- Comments
9
- Commands
nim c --gc:arc -d:nimArcDebug -d:nimArcIds --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 11 minutes
bisecting 2110
commits at 186
commits per second
from nim.
So what should be done here? You cannot pass a subtype to a sink Object
? Otherwise we get a sliced copy.
from nim.
Otherwise we get a sliced copy.
Broadly, I view slicing copies as the generalisation of a narrowing integer conversion and ideally they should be handled the same way in the language: there should be a compiler error that can be solved by an explicit conversion where needed (same as when you try to convert an int64
to int32
).
from nim.
Also, in this example there is no slicing so no special casing should be needed, leaving sink
to behave unpredictably with respect to "normal" value semantics
from nim.
Related Issues (20)
- Enum overloading regression HOT 4
- Nimsuggest - Methods marked with {.base.} trigger error on chk HOT 3
- Ref array causing Segfault HOT 4
- osproc.startProcess should support "not following symlinks" HOT 2
- When `move` meets` sink`, `= sink` hook function is not called HOT 4
- [ignore] bisect HOT 7
- Error: type mismatch: got <typedesc[A]>, but expected one of: A = proc (){.closure.}
- Default object values silently override generic types
- Enum Overloading Regression? HOT 4
- async `and` swallows errors
- Async `finally` swallows errors when it contains an `await` wrapped by `try/except`
- The `when nimvm` statement fails to compile when in a file called nimvm.nim HOT 4
- Regression from 2.0 to `devel` with `dirty` template HOT 3
- Async memory leak when raising exception on ORC HOT 1
- unicode.splitWhitespace() and strutils.splitWhitespace() have different results for ASCII string
- Wrong stack trace when exception is raised in template HOT 1
- Error: cannot evaluate at compile time: foo HOT 4
- nim check crashes
- Any differnece between value types and reference types for `=sink` ? HOT 1
- Simple destructor code gives invalid C HOT 4
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.