Comments (4)
Nim's model does not allow for self-pointing objects:
# Always point to my own 'n' field
dest.p = dest.n.addr
This is not supported. I am not sure what it would take to support it.
from nim.
!nim c
type
Obj = object
n: int
p: ptr int
proc `$`*(p: pointer): string =
$cast[uint](p)
proc `$`*[T](p: ptr T): string =
$cast[uint](p)
proc `=sink`*(dest: var Obj; source: Obj) =
echo "sink"
dest.n = source.n
dest.p = dest.n.addr
proc `=dup`*(a: Obj): Obj {.nodestroy.} =
echo "dup"
var oldV = Obj(n: 1)
proc decodeN(newV: sink Obj) =
echo "new p: ", cast[uint](newV.p)
echo "old value: ", oldV
echo "new value: ", newV
doAssert newV.p == newV.n.addr
oldV.p = oldV.n.addr
echo "old p: ", cast[uint](oldV.p)
decodeN(move oldV)
from nim.
🐧 Linux bisect by @juancarlospaco (collaborator)
devel 👎 FAIL
Output
Error: Command failed: nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim decodeN
/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(20, 3) `newV.p == newV.n.addr` [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 filesize99.65 Kb (102,040 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <string.h>
#define nimfr_(proc, file) \
TFrame FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = 0; nimFrame(&FR_);
#define nimfrs_(proc, file, slots, length) \
struct {TFrame* prev;NCSTRING procname;NI line;NCSTRING filename;NI len;VarSlot s[slots];} FR_; \
FR_.procname = proc; FR_.filename = file; FR_.line = 0; FR_.len = length; nimFrame((TFrame*)&FR_);
#define nimln_(n) \
FR_.line = n;
#define nimlf_(n, file) \
FR_.line = n; FR_.filename = file;
typedef struct tyObject_Obj__3QyuY1yTGznZdLpU6vgCog tyObject_Obj__3QyuY1yTGznZdLpU6vgCog;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct tyObject_Obj__3QyuY1yTGznZdLpU6vgCog {
NI n;
NI* p;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
typedef NimStringV2 tyArray__Re75IspeoxXy2oCZHwcRrA[2];
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(NimStringV2, dollar___systemZdollars_u14)(NU64 x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
N_LIB_PRIVATE N_NIMCALL(void, decodeN__temp_u37)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog newV_p0);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u95)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog x_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4555)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u235)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u207)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___temp_u204)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0);
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);
static const struct {
NI cap; NIM_CHAR data[7+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 7 | NIM_STRLIT_FLAG, "old p: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {7, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[7+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 7 | NIM_STRLIT_FLAG, "new p: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {7, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
static const struct {
NI cap; NIM_CHAR data[11+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_6 = { 11 | NIM_STRLIT_FLAG, "old value: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_7 = {11, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_6};
static const struct {
NI cap; NIM_CHAR data[11+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 11 | NIM_STRLIT_FLAG, "new value: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_9 = {11, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8};
static const struct {
NI cap; NIM_CHAR data[66+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_10 = { 66 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(20, 3) `newV.p == newV.n.addr` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_11 = {66, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_10};
N_LIB_PRIVATE tyObject_Obj__3QyuY1yTGznZdLpU6vgCog oldV__temp_u36;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4339;
extern NIM_THREADVAR TFrame* framePtr__system_u2654;
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_u4339);
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_u2654 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u2654).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u2654;
framePtr__system_u2654 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u4555();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u2654 = (*framePtr__system_u2654).prev;
}
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u148)(NI* p_p0) {
NimStringV2 result;
NIM_BOOL* nimErr_;
nimfr_("$", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
result = dollar___systemZdollars_u14(((NU64) (((NU) (ptrdiff_t) (p_p0)))));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
popFrame();
return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u207)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0) {
}
N_LIB_PRIVATE N_NIMCALL(void, decodeN__temp_u37)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog newV_p0) {
NimStringV2 colontmpD_;
NimStringV2 colontmpD__2;
NimStringV2 colontmpD__3;
tyArray__Re75IspeoxXy2oCZHwcRrA T2_;
tyArray__Re75IspeoxXy2oCZHwcRrA T3_;
tyArray__Re75IspeoxXy2oCZHwcRrA T4_;
NIM_BOOL* nimErr_;
nimfr_("decodeN", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
colontmpD__2.len = 0; colontmpD__2.p = NIM_NIL;
colontmpD__3.len = 0; colontmpD__3.p = NIM_NIL;
T2_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_5;
colontmpD_ = dollar___systemZdollars_u14(((NU64) (((NU) (ptrdiff_t) (newV_p0.p)))));
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T2_[1] = colontmpD_;
echoBinSafe(T2_, 2);
T3_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_7;
colontmpD__2 = dollar___temp_u95(oldV__temp_u36);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T3_[1] = colontmpD__2;
echoBinSafe(T3_, 2);
T4_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_9;
colontmpD__3 = dollar___temp_u95(newV_p0);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T4_[1] = colontmpD__3;
echoBinSafe(T4_, 2);
{
if (!!((newV_p0.p == (&newV_p0.n)))) goto LA7_;
failedAssertImpl__stdZassertions_u235(TM__SRd76hP9cMfCzdUO857UhQQ_11);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
}
LA7_: ;
{
LA1_:;
}
{
eqdestroy___temp_u207((&newV_p0));
if (colontmpD__3.p && !(colontmpD__3.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD__3.p);
}
if (colontmpD__2.p && !(colontmpD__2.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD__2.p);
}
if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___temp_u204)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0) {
(*dest_p0).n = 0;
(*dest_p0).p = 0;
}
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) {
{
NimStringV2 colontmpD_;
tyArray__Re75IspeoxXy2oCZHwcRrA T2_;
tyObject_Obj__3QyuY1yTGznZdLpU6vgCog T3_;
NIM_BOOL* nimErr_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
nimZeroMem((void*)(&oldV__temp_u36), sizeof(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog));
oldV__temp_u36.n = ((NI)1);
oldV__temp_u36.p = (&oldV__temp_u36.n);
T2_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_3;
colontmpD_ = dollar___systemZdollars_u14(((NU64) (((NU) (ptrdiff_t) (oldV__temp_u36.p)))));
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T2_[1] = colontmpD_;
echoBinSafe(T2_, 2);
T3_ = oldV__temp_u36;
eqwasMoved___temp_u204((&oldV__temp_u36));
decodeN__temp_u37(T3_);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
{
LA1_:;
}
{
if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
eqdestroy___temp_u207((&oldV__temp_u36));
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
Stats
- Started
2024-05-08T11:13:06
- Finished
2024-05-08T11:13:06
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Obj"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("n"),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("int")
),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
newIdentNode("pointer"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("T")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("sink")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("dest"),
nnkVarTy.newTree(
newIdentNode("Obj")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("source"),
newIdentNode("Obj"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("sink")
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
nnkDotExpr.newTree(
newIdentNode("source"),
newIdentNode("n")
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("dup")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("Obj"),
nnkIdentDefs.newTree(
newIdentNode("a"),
newIdentNode("Obj"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("nodestroy")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("dup")
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("oldV"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("Obj"),
nnkExprColonExpr.newTree(
newIdentNode("n"),
newLit(1)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("decodeN"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("newV"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("Obj")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
)
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old value: "),
newIdentNode("oldV")
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new value: "),
newIdentNode("newV")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("n")
),
newIdentNode("addr")
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
)
)
),
nnkCall.newTree(
newIdentNode("decodeN"),
nnkCommand.newTree(
newIdentNode("move"),
newIdentNode("oldV")
)
)
)
stable 👎 FAIL
Output
Error: Command failed: nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim decodeN
/home/runner/.choosenim/toolchains/nim-2.0.4/lib/std/assertions.nim failedAssertImpl
/home/runner/.choosenim/toolchains/nim-2.0.4/lib/std/assertions.nim raiseAssert
/home/runner/.choosenim/toolchains/nim-2.0.4/lib/system/fatal.nim sysFatal
Error: unhandled exception: /home/runner/work/Nim/Nim/temp.nim(20, 3) `newV.p == newV.n.addr` [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 filesize97.67 Kb (100,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_Obj__3QyuY1yTGznZdLpU6vgCog tyObject_Obj__3QyuY1yTGznZdLpU6vgCog;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct tyObject_Obj__3QyuY1yTGznZdLpU6vgCog {
NI n;
NI* p;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
typedef NimStringV2 tyArray__Re75IspeoxXy2oCZHwcRrA[2];
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(NimStringV2, dollar___systemZdollars_u14)(NU64 x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
N_LIB_PRIVATE N_NIMCALL(void, decodeN__temp_u18)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog newV_p0);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u78)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog x_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4621)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u310)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u192)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___temp_u189)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
static const struct {
NI cap; NIM_CHAR data[7+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 7 | NIM_STRLIT_FLAG, "old p: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {7, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[7+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 7 | NIM_STRLIT_FLAG, "new p: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {7, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
static const struct {
NI cap; NIM_CHAR data[11+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_6 = { 11 | NIM_STRLIT_FLAG, "old value: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_7 = {11, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_6};
static const struct {
NI cap; NIM_CHAR data[11+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 11 | NIM_STRLIT_FLAG, "new value: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_9 = {11, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8};
static const struct {
NI cap; NIM_CHAR data[66+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_10 = { 66 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(20, 3) `newV.p == newV.n.addr` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_11 = {66, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_10};
N_LIB_PRIVATE tyObject_Obj__3QyuY1yTGznZdLpU6vgCog oldV__temp_u17;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4403;
extern NIM_THREADVAR TFrame* framePtr__system_u4020;
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
void* T1_;
T1_ = (void*)0;
T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
NIM_BOOL* result;
result = (&nimInErrorMode__system_u4403);
return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u4020 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u4020).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u4020;
framePtr__system_u4020 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u4621();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u4020 = (*framePtr__system_u4020).prev;
}
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u133)(NI* p_p0) {
NimStringV2 result;
NIM_BOOL* nimErr_;
nimfr_("$", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
result = dollar___systemZdollars_u14(((NU64) (((NU) (ptrdiff_t) (p_p0)))));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
popFrame();
return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u192)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0) {
}
N_LIB_PRIVATE N_NIMCALL(void, decodeN__temp_u18)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog newV_p0) {
NimStringV2 colontmpD_;
NimStringV2 colontmpD__2;
NimStringV2 colontmpD__3;
tyArray__Re75IspeoxXy2oCZHwcRrA T2_;
tyArray__Re75IspeoxXy2oCZHwcRrA T3_;
tyArray__Re75IspeoxXy2oCZHwcRrA T4_;
NIM_BOOL* nimErr_;
nimfr_("decodeN", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
colontmpD__2.len = 0; colontmpD__2.p = NIM_NIL;
colontmpD__3.len = 0; colontmpD__3.p = NIM_NIL;
T2_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_5;
colontmpD_ = dollar___systemZdollars_u14(((NU64) (((NU) (ptrdiff_t) (newV_p0.p)))));
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T2_[1] = colontmpD_;
echoBinSafe(T2_, 2);
T3_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_7;
colontmpD__2 = dollar___temp_u78(oldV__temp_u17);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T3_[1] = colontmpD__2;
echoBinSafe(T3_, 2);
T4_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_9;
colontmpD__3 = dollar___temp_u78(newV_p0);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T4_[1] = colontmpD__3;
echoBinSafe(T4_, 2);
{
if (!!((newV_p0.p == (&newV_p0.n)))) goto LA7_;
failedAssertImpl__stdZassertions_u310(TM__SRd76hP9cMfCzdUO857UhQQ_11);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
}
LA7_: ;
{
LA1_:;
}
{
eqdestroy___temp_u192((&newV_p0));
if (colontmpD__3.p && !(colontmpD__3.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD__3.p);
}
if (colontmpD__2.p && !(colontmpD__2.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD__2.p);
}
if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___temp_u189)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0) {
(*dest_p0).n = 0;
(*dest_p0).p = 0;
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
#if 0
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus2dot0dot4atslibatssystemdotnim_Init000();
PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 0
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
(*inner)();
#else
PreMain();
NimMainInner();
#endif
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
NimStringV2 colontmpD_;
tyArray__Re75IspeoxXy2oCZHwcRrA T2_;
tyObject_Obj__3QyuY1yTGznZdLpU6vgCog T3_;
NIM_BOOL* nimErr_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
nimZeroMem((void*)(&oldV__temp_u17), sizeof(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog));
oldV__temp_u17.n = ((NI)1);
oldV__temp_u17.p = (&oldV__temp_u17.n);
T2_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_3;
colontmpD_ = dollar___systemZdollars_u14(((NU64) (((NU) (ptrdiff_t) (oldV__temp_u17.p)))));
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T2_[1] = colontmpD_;
echoBinSafe(T2_, 2);
T3_ = oldV__temp_u17;
eqwasMoved___temp_u189((&oldV__temp_u17));
decodeN__temp_u18(T3_);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
{
LA1_:;
}
{
if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
eqdestroy___temp_u192((&oldV__temp_u17));
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
Stats
- Started
2024-05-08T11:13:07
- Finished
2024-05-08T11:13:07
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Obj"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("n"),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("int")
),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
newIdentNode("pointer"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("T")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("sink")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("dest"),
nnkVarTy.newTree(
newIdentNode("Obj")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("source"),
newIdentNode("Obj"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("sink")
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
nnkDotExpr.newTree(
newIdentNode("source"),
newIdentNode("n")
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("dup")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("Obj"),
nnkIdentDefs.newTree(
newIdentNode("a"),
newIdentNode("Obj"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("nodestroy")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("dup")
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("oldV"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("Obj"),
nnkExprColonExpr.newTree(
newIdentNode("n"),
newLit(1)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("decodeN"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("newV"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("Obj")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
)
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old value: "),
newIdentNode("oldV")
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new value: "),
newIdentNode("newV")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("n")
),
newIdentNode("addr")
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
)
)
),
nnkCall.newTree(
newIdentNode("decodeN"),
nnkCommand.newTree(
newIdentNode("move"),
newIdentNode("oldV")
)
)
)
2.0.2 👎 FAIL
Output
Error: Command failed: nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim decodeN
/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(20, 3) `newV.p == newV.n.addr` [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 filesize97.68 Kb (100,024 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_Obj__3QyuY1yTGznZdLpU6vgCog tyObject_Obj__3QyuY1yTGznZdLpU6vgCog;
typedef struct NimStrPayload NimStrPayload;
typedef struct NimStringV2 NimStringV2;
struct tyObject_Obj__3QyuY1yTGznZdLpU6vgCog {
NI n;
NI* p;
};
struct NimStrPayload {
NI cap;
NIM_CHAR data[SEQ_DECL_SIZE];
};
struct NimStringV2 {
NI len;
NimStrPayload* p;
};
typedef NimStringV2 tyArray__Re75IspeoxXy2oCZHwcRrA[2];
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(NimStringV2, dollar___systemZdollars_u14)(NU64 x_p0);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringV2* args_p0, NI args_p0Len_0);
N_LIB_PRIVATE N_NIMCALL(void, decodeN__temp_u18)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog newV_p0);
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u78)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog x_p0);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4621)(void);
static N_INLINE(void, popFrame)(void);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__stdZassertions_u310)(NimStringV2 msg_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u192)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0);
N_LIB_PRIVATE N_NOCONV(void, deallocShared)(void* p_p0);
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___temp_u189)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0);
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);
static const struct {
NI cap; NIM_CHAR data[7+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_2 = { 7 | NIM_STRLIT_FLAG, "old p: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_3 = {7, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_2};
static const struct {
NI cap; NIM_CHAR data[7+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_4 = { 7 | NIM_STRLIT_FLAG, "new p: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_5 = {7, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_4};
static const struct {
NI cap; NIM_CHAR data[11+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_6 = { 11 | NIM_STRLIT_FLAG, "old value: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_7 = {11, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_6};
static const struct {
NI cap; NIM_CHAR data[11+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_8 = { 11 | NIM_STRLIT_FLAG, "new value: " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_9 = {11, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_8};
static const struct {
NI cap; NIM_CHAR data[66+1];
} TM__SRd76hP9cMfCzdUO857UhQQ_10 = { 66 | NIM_STRLIT_FLAG, "/home/runner/work/Nim/Nim/temp.nim(20, 3) `newV.p == newV.n.addr` " };
static const NimStringV2 TM__SRd76hP9cMfCzdUO857UhQQ_11 = {66, (NimStrPayload*)&TM__SRd76hP9cMfCzdUO857UhQQ_10};
N_LIB_PRIVATE tyObject_Obj__3QyuY1yTGznZdLpU6vgCog oldV__temp_u17;
extern NIM_THREADVAR NIM_BOOL nimInErrorMode__system_u4403;
extern NIM_THREADVAR TFrame* framePtr__system_u4020;
static N_INLINE(void, nimSetMem__systemZmemory_u7)(void* a_p0, int v_p1, NI size_p2) {
void* T1_;
T1_ = (void*)0;
T1_ = memset(a_p0, v_p1, ((size_t) (size_p2)));
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
NIM_BOOL* result;
result = (&nimInErrorMode__system_u4403);
return result;
}
static N_INLINE(void, nimZeroMem)(void* p_p0, NI size_p1) {
NIM_BOOL* nimErr_;
{nimErr_ = nimErrorFlag();
nimSetMem__systemZmemory_u7(p_p0, ((int)0), size_p1);
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
}
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u4020 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u4020).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u4020;
framePtr__system_u4020 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u4621();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u4020 = (*framePtr__system_u4020).prev;
}
N_LIB_PRIVATE N_NIMCALL(NimStringV2, dollar___temp_u133)(NI* p_p0) {
NimStringV2 result;
NIM_BOOL* nimErr_;
nimfr_("$", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
result = dollar___systemZdollars_u14(((NU64) (((NU) (ptrdiff_t) (p_p0)))));
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
popFrame();
return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_u192)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0) {
}
N_LIB_PRIVATE N_NIMCALL(void, decodeN__temp_u18)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog newV_p0) {
NimStringV2 colontmpD_;
NimStringV2 colontmpD__2;
NimStringV2 colontmpD__3;
tyArray__Re75IspeoxXy2oCZHwcRrA T2_;
tyArray__Re75IspeoxXy2oCZHwcRrA T3_;
tyArray__Re75IspeoxXy2oCZHwcRrA T4_;
NIM_BOOL* nimErr_;
nimfr_("decodeN", "/home/runner/work/Nim/Nim/temp.nim");
{nimErr_ = nimErrorFlag();
colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
colontmpD__2.len = 0; colontmpD__2.p = NIM_NIL;
colontmpD__3.len = 0; colontmpD__3.p = NIM_NIL;
T2_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_5;
colontmpD_ = dollar___systemZdollars_u14(((NU64) (((NU) (ptrdiff_t) (newV_p0.p)))));
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T2_[1] = colontmpD_;
echoBinSafe(T2_, 2);
T3_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_7;
colontmpD__2 = dollar___temp_u78(oldV__temp_u17);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T3_[1] = colontmpD__2;
echoBinSafe(T3_, 2);
T4_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_9;
colontmpD__3 = dollar___temp_u78(newV_p0);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T4_[1] = colontmpD__3;
echoBinSafe(T4_, 2);
{
if (!!((newV_p0.p == (&newV_p0.n)))) goto LA7_;
failedAssertImpl__stdZassertions_u310(TM__SRd76hP9cMfCzdUO857UhQQ_11);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
}
LA7_: ;
{
LA1_:;
}
{
eqdestroy___temp_u192((&newV_p0));
if (colontmpD__3.p && !(colontmpD__3.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD__3.p);
}
if (colontmpD__2.p && !(colontmpD__2.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD__2.p);
}
if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
}BeforeRet_: ;
popFrame();
}
N_LIB_PRIVATE N_NIMCALL(void, eqwasMoved___temp_u189)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest_p0) {
(*dest_p0).n = 0;
(*dest_p0).p = 0;
}
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) {
{
NimStringV2 colontmpD_;
tyArray__Re75IspeoxXy2oCZHwcRrA T2_;
tyObject_Obj__3QyuY1yTGznZdLpU6vgCog T3_;
NIM_BOOL* nimErr_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
colontmpD_.len = 0; colontmpD_.p = NIM_NIL;
nimZeroMem((void*)(&oldV__temp_u17), sizeof(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog));
oldV__temp_u17.n = ((NI)1);
oldV__temp_u17.p = (&oldV__temp_u17.n);
T2_[0] = TM__SRd76hP9cMfCzdUO857UhQQ_3;
colontmpD_ = dollar___systemZdollars_u14(((NU64) (((NU) (ptrdiff_t) (oldV__temp_u17.p)))));
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
T2_[1] = colontmpD_;
echoBinSafe(T2_, 2);
T3_ = oldV__temp_u17;
eqwasMoved___temp_u189((&oldV__temp_u17));
decodeN__temp_u18(T3_);
if (NIM_UNLIKELY(*nimErr_)) goto LA1_;
{
LA1_:;
}
{
if (colontmpD_.p && !(colontmpD_.p->cap & NIM_STRLIT_FLAG)) {
deallocShared(colontmpD_.p);
}
}
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
eqdestroy___temp_u192((&oldV__temp_u17));
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
}
Stats
- Started
2024-05-08T11:13:10
- Finished
2024-05-08T11:13:11
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Obj"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("n"),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("int")
),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
newIdentNode("pointer"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("T")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("sink")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("dest"),
nnkVarTy.newTree(
newIdentNode("Obj")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("source"),
newIdentNode("Obj"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("sink")
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
nnkDotExpr.newTree(
newIdentNode("source"),
newIdentNode("n")
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("dup")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("Obj"),
nnkIdentDefs.newTree(
newIdentNode("a"),
newIdentNode("Obj"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("nodestroy")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("dup")
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("oldV"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("Obj"),
nnkExprColonExpr.newTree(
newIdentNode("n"),
newLit(1)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("decodeN"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("newV"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("Obj")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
)
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old value: "),
newIdentNode("oldV")
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new value: "),
newIdentNode("newV")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("n")
),
newIdentNode("addr")
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
)
)
),
nnkCall.newTree(
newIdentNode("decodeN"),
nnkCommand.newTree(
newIdentNode("move"),
newIdentNode("oldV")
)
)
)
1.6.14 👎 FAIL
Output
Error: Command failed: nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim decodeN
/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(20, 12) `newV.p == newV.n.addr` [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 filesize105.37 Kb (107,896 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_Obj__3QyuY1yTGznZdLpU6vgCog tyObject_Obj__3QyuY1yTGznZdLpU6vgCog;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Exception Exception;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence__SeNI9cjAwgnSTUG8yHFeMew tySequence__SeNI9cjAwgnSTUG8yHFeMew;
typedef struct TSafePoint TSafePoint;
typedef struct tyObject_StackTraceEntry__HK6FWWCL5W1d6sCawft2nw tyObject_StackTraceEntry__HK6FWWCL5W1d6sCawft2nw;
struct tyObject_Obj__3QyuY1yTGznZdLpU6vgCog {
NI n;
NI* p;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NimStringDesc* tyArray__Re75IspeoxXy2oCZHwcRrA[2];
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 Exception {
RootObj Sup;
Exception* parent;
NCSTRING name;
NimStringDesc* message;
tySequence__SeNI9cjAwgnSTUG8yHFeMew* trace;
Exception* up;
};
typedef long tyArray__TcvIiMAJvcwzNLsZkfnFnQ[25];
struct TSafePoint {
TSafePoint* prev;
NI status;
jmp_buf context;
};
struct tyObject_StackTraceEntry__HK6FWWCL5W1d6sCawft2nw {
NCSTRING procname;
NI line;
NCSTRING filename;
};
struct tySequence__SeNI9cjAwgnSTUG8yHFeMew {
TGenericSeq Sup;
tyObject_StackTraceEntry__HK6FWWCL5W1d6sCawft2nw 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(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___systemZdollars_9)(NU64 x);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
N_LIB_PRIVATE N_NIMCALL(void, decodeN__temp_24)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog newV);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___temp_77)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog 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, failedAssertImpl__systemZassertions_56)(NimStringDesc* msg);
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___temp_18)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest);
N_LIB_PRIVATE N_NIMCALL(void, nimLeaveFinally)(void);
N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
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, NimMainModule)(void);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "old p: ", 7);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_4, "new p: ", 7);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_5, "old value: ", 11);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_6, "new value: ", 11);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_7, "/home/runner/work/Nim/Nim/temp.nim(20, 12) `newV.p == newV.n.addr` ", 67);
N_LIB_PRIVATE tyObject_Obj__3QyuY1yTGznZdLpU6vgCog oldV__temp_17;
extern TSafePoint* excHandler__system_2565;
extern TSafePoint* excHandler__system_2565;
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;
extern TSafePoint* excHandler__system_2565;
extern TSafePoint* excHandler__system_2565;
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, pushSafePoint)(TSafePoint* s) {
(*s).prev = excHandler__system_2565;
excHandler__system_2565 = s;
}
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(NimStringDesc*, dollar___temp_125)(NI* p) {
NimStringDesc* result;
nimfr_("$", "/home/runner/work/Nim/Nim/temp.nim");
result = NIM_NIL;
result = dollar___systemZdollars_9(((NU64) (((NU) (ptrdiff_t) (p)))));
popFrame();
return result;
}
static N_INLINE(void, popSafePoint)(void) {
excHandler__system_2565 = (*excHandler__system_2565).prev;
}
static N_INLINE(TFrame*, getFrame)(void) {
TFrame* result;
result = (TFrame*)0;
result = framePtr__system_2564;
return result;
}
static N_INLINE(void, setFrame)(TFrame* s) {
framePtr__system_2564 = s;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___temp_18)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog* dest) {
}
N_LIB_PRIVATE N_NIMCALL(void, decodeN__temp_24)(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog newV) {
TSafePoint TM__SRd76hP9cMfCzdUO857UhQQ_3;
tyArray__Re75IspeoxXy2oCZHwcRrA T1_;
tyArray__Re75IspeoxXy2oCZHwcRrA T2_;
tyArray__Re75IspeoxXy2oCZHwcRrA T3_;
TFrame* _nimCurFrame;
nimfr_("decodeN", "/home/runner/work/Nim/Nim/temp.nim");
_nimCurFrame = getFrame();
pushSafePoint(&TM__SRd76hP9cMfCzdUO857UhQQ_3);
TM__SRd76hP9cMfCzdUO857UhQQ_3.status = setjmp(TM__SRd76hP9cMfCzdUO857UhQQ_3.context);
if (TM__SRd76hP9cMfCzdUO857UhQQ_3.status == 0) {
nimZeroMem((void*)T1_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T1_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_4));
T1_[1] = dollar___systemZdollars_9(((NU64) (((NU) (ptrdiff_t) (newV.p)))));
echoBinSafe(T1_, 2);
nimZeroMem((void*)T2_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T2_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_5));
T2_[1] = dollar___temp_77(oldV__temp_17);
echoBinSafe(T2_, 2);
nimZeroMem((void*)T3_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T3_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6));
T3_[1] = dollar___temp_77(newV);
echoBinSafe(T3_, 2);
{
if (!!((newV.p == (&newV.n)))) goto LA6_;
failedAssertImpl__systemZassertions_56(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_7));
}
LA6_: ;
popSafePoint();
}
else {
popSafePoint();
setFrame(_nimCurFrame);
}
{
eqdestroy___temp_18((&newV));
if (TM__SRd76hP9cMfCzdUO857UhQQ_3.status != 0) nimLeaveFinally();
}
if (TM__SRd76hP9cMfCzdUO857UhQQ_3.status != 0) reraiseException();
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();
(*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) {
{
tyArray__Re75IspeoxXy2oCZHwcRrA T1_;
tyObject_Obj__3QyuY1yTGznZdLpU6vgCog T2_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&oldV__temp_17), sizeof(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog));
oldV__temp_17.n = ((NI) 1);
oldV__temp_17.p = (&oldV__temp_17.n);
nimZeroMem((void*)T1_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T1_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
T1_[1] = dollar___systemZdollars_9(((NU64) (((NU) (ptrdiff_t) (oldV__temp_17.p)))));
echoBinSafe(T1_, 2);
T2_ = oldV__temp_17;
nimZeroMem((void*)(&oldV__temp_17), sizeof(tyObject_Obj__3QyuY1yTGznZdLpU6vgCog));
decodeN__temp_24(T2_);
eqdestroy___temp_18((&oldV__temp_17));
popFrame();
}
}
Stats
- Started
2024-05-08T11:13:14
- Finished
2024-05-08T11:13:14
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Obj"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("n"),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("int")
),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
newIdentNode("pointer"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("T")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("sink")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("dest"),
nnkVarTy.newTree(
newIdentNode("Obj")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("source"),
newIdentNode("Obj"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("sink")
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
nnkDotExpr.newTree(
newIdentNode("source"),
newIdentNode("n")
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("dup")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("Obj"),
nnkIdentDefs.newTree(
newIdentNode("a"),
newIdentNode("Obj"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("nodestroy")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("dup")
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("oldV"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("Obj"),
nnkExprColonExpr.newTree(
newIdentNode("n"),
newLit(1)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("decodeN"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("newV"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("Obj")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
)
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old value: "),
newIdentNode("oldV")
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new value: "),
newIdentNode("newV")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("n")
),
newIdentNode("addr")
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
)
)
),
nnkCall.newTree(
newIdentNode("decodeN"),
nnkCommand.newTree(
newIdentNode("move"),
newIdentNode("oldV")
)
)
)
1.4.8 👎 FAIL
Output
Error: Command failed: nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim decodeN
/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(20, 12) `newV.p == newV.n.addr` [AssertionDefect]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '
IR
Compiled filesize97.87 Kb (100,216 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_Obj__aUn5SLDz0QPhgEhlLh33kg tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Exception Exception;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
typedef struct TSafePoint TSafePoint;
typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
struct tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg {
NI n;
NI* p;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NimStringDesc* tyArray__Re75IspeoxXy2oCZHwcRrA[2];
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 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_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___M2d4UEGH9cZOvte6rEhvUTQ)(NU64 x);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
N_LIB_PRIVATE N_NIMCALL(void, decodeN__VmWgbyObnJU9blGk5yE6Xow)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg newV);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___Ib0RvzV2R9cEkwUHdYL19avA)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg 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, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
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___vyTnmVM4z9adBqAVCMUFGWQ)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg* dest);
N_LIB_PRIVATE N_NIMCALL(void, nimLeaveFinally)(void);
N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "old p: ", 7);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_4, "new p: ", 7);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_5, "old value: ", 11);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_6, "new value: ", 11);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_7, "/home/runner/work/Nim/Nim/temp.nim(20, 12) `newV.p == newV.n.ad"
"dr` ", 67);
N_LIB_PRIVATE tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg oldV__AFz13lOl6ux2K6DQb2fYAQ;
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 TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
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, 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(NimStringDesc*, dollar___cNWAXSpFRtj9bkL4Q1ZfdmA)(NI* p) {
NimStringDesc* result;
nimfr_("$", "/home/runner/work/Nim/Nim/temp.nim");
result = (NimStringDesc*)0;
result = dollar___M2d4UEGH9cZOvte6rEhvUTQ(((NU64) (((NU) (ptrdiff_t) (p)))));
popFrame();
return result;
}
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;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___vyTnmVM4z9adBqAVCMUFGWQ)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg* dest) {
}
N_LIB_PRIVATE N_NIMCALL(void, decodeN__VmWgbyObnJU9blGk5yE6Xow)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg newV) {
TSafePoint TM__SRd76hP9cMfCzdUO857UhQQ_3;
tyArray__Re75IspeoxXy2oCZHwcRrA T1_;
tyArray__Re75IspeoxXy2oCZHwcRrA T2_;
tyArray__Re75IspeoxXy2oCZHwcRrA T3_;
TFrame* _nimCurFrame;
nimfr_("decodeN", "/home/runner/work/Nim/Nim/temp.nim");
_nimCurFrame = getFrame();
pushSafePoint(&TM__SRd76hP9cMfCzdUO857UhQQ_3);
TM__SRd76hP9cMfCzdUO857UhQQ_3.status = setjmp(TM__SRd76hP9cMfCzdUO857UhQQ_3.context);
if (TM__SRd76hP9cMfCzdUO857UhQQ_3.status == 0) {
nimZeroMem((void*)T1_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T1_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_4));
T1_[1] = dollar___M2d4UEGH9cZOvte6rEhvUTQ(((NU64) (((NU) (ptrdiff_t) (newV.p)))));
echoBinSafe(T1_, 2);
nimZeroMem((void*)T2_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T2_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_5));
T2_[1] = dollar___Ib0RvzV2R9cEkwUHdYL19avA(oldV__AFz13lOl6ux2K6DQb2fYAQ);
echoBinSafe(T2_, 2);
nimZeroMem((void*)T3_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T3_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6));
T3_[1] = dollar___Ib0RvzV2R9cEkwUHdYL19avA(newV);
echoBinSafe(T3_, 2);
{
if (!!((newV.p == (&newV.n)))) goto LA6_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_7));
}
LA6_: ;
popSafePoint();
}
else {
popSafePoint();
setFrame(_nimCurFrame);
}
{
eqdestroy___vyTnmVM4z9adBqAVCMUFGWQ((&newV));
if (TM__SRd76hP9cMfCzdUO857UhQQ_3.status != 0) nimLeaveFinally();
}
if (TM__SRd76hP9cMfCzdUO857UhQQ_3.status != 0) reraiseException();
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
void (*volatile inner)(void);
inner = PreMainInner;
systemDatInit000();
initStackBottomWith((void *)&inner);
systemInit000();
(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
tyArray__Re75IspeoxXy2oCZHwcRrA T1_;
tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg T2_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimZeroMem((void*)(&oldV__AFz13lOl6ux2K6DQb2fYAQ), sizeof(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg));
oldV__AFz13lOl6ux2K6DQb2fYAQ.n = ((NI) 1);
oldV__AFz13lOl6ux2K6DQb2fYAQ.p = (&oldV__AFz13lOl6ux2K6DQb2fYAQ.n);
nimZeroMem((void*)T1_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T1_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
T1_[1] = dollar___M2d4UEGH9cZOvte6rEhvUTQ(((NU64) (((NU) (ptrdiff_t) (oldV__AFz13lOl6ux2K6DQb2fYAQ.p)))));
echoBinSafe(T1_, 2);
T2_ = oldV__AFz13lOl6ux2K6DQb2fYAQ;
nimZeroMem((void*)(&oldV__AFz13lOl6ux2K6DQb2fYAQ), sizeof(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg));
decodeN__VmWgbyObnJU9blGk5yE6Xow(T2_);
eqdestroy___vyTnmVM4z9adBqAVCMUFGWQ((&oldV__AFz13lOl6ux2K6DQb2fYAQ));
popFrame();
}
}
Stats
- Started
2024-05-08T11:13:17
- Finished
2024-05-08T11:13:17
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Obj"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("n"),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("int")
),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
newIdentNode("pointer"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("T")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("sink")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("dest"),
nnkVarTy.newTree(
newIdentNode("Obj")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("source"),
newIdentNode("Obj"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("sink")
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
nnkDotExpr.newTree(
newIdentNode("source"),
newIdentNode("n")
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("dup")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("Obj"),
nnkIdentDefs.newTree(
newIdentNode("a"),
newIdentNode("Obj"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("nodestroy")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("dup")
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("oldV"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("Obj"),
nnkExprColonExpr.newTree(
newIdentNode("n"),
newLit(1)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("decodeN"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("newV"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("Obj")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
)
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old value: "),
newIdentNode("oldV")
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new value: "),
newIdentNode("newV")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("n")
),
newIdentNode("addr")
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
)
)
),
nnkCall.newTree(
newIdentNode("decodeN"),
nnkCommand.newTree(
newIdentNode("move"),
newIdentNode("oldV")
)
)
)
1.2.18 👎 FAIL
Output
Error: Command failed: nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim decodeN
/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(20, 12) `newV.p == newV.n.addr` [AssertionError]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '
IR
Compiled filesize97.91 Kb (100,256 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_Obj__aUn5SLDz0QPhgEhlLh33kg tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg;
typedef struct NimStringDesc NimStringDesc;
typedef struct TGenericSeq TGenericSeq;
typedef struct Exception Exception;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
typedef struct TSafePoint TSafePoint;
typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
struct tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg {
NI n;
NI* p;
};
struct TGenericSeq {
NI len;
NI reserved;
};
struct NimStringDesc {
TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef NimStringDesc* tyArray__Re75IspeoxXy2oCZHwcRrA[2];
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 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];
};
N_LIB_PRIVATE 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(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___RkX9btpg5sQIaP8yYXB6tbA)(NU64 x);
N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
N_LIB_PRIVATE N_NIMCALL(void, decodeN__VmWgbyObnJU9blGk5yE6Xow)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg newV);
static N_INLINE(void, pushSafePoint)(TSafePoint* s);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___Ib0RvzV2R9cEkwUHdYL19avA)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg 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, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
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___vyTnmVM4z9adBqAVCMUFGWQ)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg* dest);
N_LIB_PRIVATE N_NIMCALL(void, nimLeaveFinally)(void);
N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_2, "old p: ", 7);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_4, "new p: ", 7);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_5, "old value: ", 11);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_6, "new value: ", 11);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_7, "/home/runner/work/Nim/Nim/temp.nim(20, 12) `newV.p == newV.n.ad"
"dr` ", 67);
N_LIB_PRIVATE tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg oldV__AFz13lOl6ux2K6DQb2fYAQ;
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 TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
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, 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(NimStringDesc*, dollar___cNWAXSpFRtj9bkL4Q1ZfdmA)(NI* p) {
NimStringDesc* result;
nimfr_("$", "/home/runner/work/Nim/Nim/temp.nim");
result = NIM_NIL;
result = dollar___RkX9btpg5sQIaP8yYXB6tbA(((NU64) (((NU) (ptrdiff_t) (p)))));
popFrame();
return result;
}
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;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___vyTnmVM4z9adBqAVCMUFGWQ)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg* dest) {
}
N_LIB_PRIVATE N_NIMCALL(void, decodeN__VmWgbyObnJU9blGk5yE6Xow)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg newV) {
TSafePoint TM__SRd76hP9cMfCzdUO857UhQQ_3;
TFrame* _nimCurFrame;
nimfr_("decodeN", "/home/runner/work/Nim/Nim/temp.nim");
_nimCurFrame = getFrame();
pushSafePoint(&TM__SRd76hP9cMfCzdUO857UhQQ_3);
TM__SRd76hP9cMfCzdUO857UhQQ_3.status = setjmp(TM__SRd76hP9cMfCzdUO857UhQQ_3.context);
if (TM__SRd76hP9cMfCzdUO857UhQQ_3.status == 0) {
tyArray__Re75IspeoxXy2oCZHwcRrA T2_;
tyArray__Re75IspeoxXy2oCZHwcRrA T3_;
tyArray__Re75IspeoxXy2oCZHwcRrA T4_;
nimZeroMem((void*)T2_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T2_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_4));
T2_[1] = dollar___RkX9btpg5sQIaP8yYXB6tbA(((NU64) (((NU) (ptrdiff_t) (newV.p)))));
echoBinSafe(T2_, 2);
nimZeroMem((void*)T3_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T3_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_5));
T3_[1] = dollar___Ib0RvzV2R9cEkwUHdYL19avA(oldV__AFz13lOl6ux2K6DQb2fYAQ);
echoBinSafe(T3_, 2);
nimZeroMem((void*)T4_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T4_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6));
T4_[1] = dollar___Ib0RvzV2R9cEkwUHdYL19avA(newV);
echoBinSafe(T4_, 2);
{
if (!!((newV.p == (&newV.n)))) goto LA7_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_7));
}
LA7_: ;
popSafePoint();
}
else {
popSafePoint();
setFrame(_nimCurFrame);
}
{
eqdestroy___vyTnmVM4z9adBqAVCMUFGWQ((&newV));
if (TM__SRd76hP9cMfCzdUO857UhQQ_3.status != 0) nimLeaveFinally();
}
if (TM__SRd76hP9cMfCzdUO857UhQQ_3.status != 0) reraiseException();
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
void (*volatile inner)(void);
inner = PreMainInner;
systemDatInit000();
initStackBottomWith((void *)&inner);
systemInit000();
(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
tyArray__Re75IspeoxXy2oCZHwcRrA T1_;
tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg T2_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
chckNil((void*)(&oldV__AFz13lOl6ux2K6DQb2fYAQ));
nimZeroMem((void*)(&oldV__AFz13lOl6ux2K6DQb2fYAQ), sizeof(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg));
oldV__AFz13lOl6ux2K6DQb2fYAQ.n = ((NI) 1);
oldV__AFz13lOl6ux2K6DQb2fYAQ.p = (&oldV__AFz13lOl6ux2K6DQb2fYAQ.n);
nimZeroMem((void*)T1_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T1_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_2));
T1_[1] = dollar___RkX9btpg5sQIaP8yYXB6tbA(((NU64) (((NU) (ptrdiff_t) (oldV__AFz13lOl6ux2K6DQb2fYAQ.p)))));
echoBinSafe(T1_, 2);
T2_ = oldV__AFz13lOl6ux2K6DQb2fYAQ;
chckNil((void*)(&oldV__AFz13lOl6ux2K6DQb2fYAQ));
nimZeroMem((void*)(&oldV__AFz13lOl6ux2K6DQb2fYAQ), sizeof(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg));
decodeN__VmWgbyObnJU9blGk5yE6Xow(T2_);
eqdestroy___vyTnmVM4z9adBqAVCMUFGWQ((&oldV__AFz13lOl6ux2K6DQb2fYAQ));
popFrame();
}
}
Stats
- Started
2024-05-08T11:13:19
- Finished
2024-05-08T11:13:20
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Obj"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("n"),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("int")
),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
newIdentNode("pointer"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("T")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("sink")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("dest"),
nnkVarTy.newTree(
newIdentNode("Obj")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("source"),
newIdentNode("Obj"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("sink")
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
nnkDotExpr.newTree(
newIdentNode("source"),
newIdentNode("n")
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("dup")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("Obj"),
nnkIdentDefs.newTree(
newIdentNode("a"),
newIdentNode("Obj"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("nodestroy")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("dup")
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("oldV"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("Obj"),
nnkExprColonExpr.newTree(
newIdentNode("n"),
newLit(1)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("decodeN"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("newV"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("Obj")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
)
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old value: "),
newIdentNode("oldV")
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new value: "),
newIdentNode("newV")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("n")
),
newIdentNode("addr")
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
)
)
),
nnkCall.newTree(
newIdentNode("decodeN"),
nnkCommand.newTree(
newIdentNode("move"),
newIdentNode("oldV")
)
)
)
1.0.10 👎 FAIL
Output
Error: Command failed: nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/work/Nim/Nim/temp.nim temp
/home/runner/work/Nim/Nim/temp.nim decodeN
/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(20, 12) `newV.p == newV.n.addr` [AssertionError]
Error: execution of an external program failed: '/home/runner/work/Nim/Nim/temp '
IR
Compiled filesize97.84 Kb (100,184 bytes)
#define NIM_INTBITS 64
#include "nimbase.h"
#include <setjmp.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_Obj__aUn5SLDz0QPhgEhlLh33kg tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg;
typedef struct Exception Exception;
typedef struct RootObj RootObj;
typedef struct TNimType TNimType;
typedef struct TNimNode TNimNode;
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;
struct tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg {
NI n;
NI* p;
};
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 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;
};
typedef NimStringDesc* tyArray__nHXaesL0DJZHyVS07ARPRA[1];
typedef NimStringDesc* tyArray__Re75IspeoxXy2oCZHwcRrA[2];
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, pushSafePoint)(TSafePoint* s);
N_LIB_PRIVATE N_NIMCALL(void, eqsink___WuHRWIKdmC5QPz5R2ZxCbg)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg* dest, tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg source);
N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, popSafePoint)(void);
static N_INLINE(TFrame*, getFrame)(void);
static N_INLINE(void, setFrame)(TFrame* s);
N_NIMCALL(void, reraiseException)(void);
static N_INLINE(void, nimZeroMem)(void* p, NI size);
static N_INLINE(void, nimSetMem__zxfKBYntu9cBapkhrCOk1fgmemory)(void* a, int v, NI size);
N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___RkX9btpg5sQIaP8yYXB6tbA)(NU64 x);
N_LIB_PRIVATE N_NIMCALL(void, decodeN__VmWgbyObnJU9blGk5yE6Xow)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg newV);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___Ib0RvzV2R9cEkwUHdYL19avA)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg x);
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___Ib0RvzV2R9cEkwUHdYL19avA_2)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg x);
N_LIB_PRIVATE N_NIMCALL(void, failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A)(NimStringDesc* msg);
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___vyTnmVM4z9adBqAVCMUFGWQ)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg* dest);
N_NOINLINE(void, chckNil)(void* p);
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, NimMainModule)(void);
tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg oldV__AFz13lOl6ux2K6DQb2fYAQ;
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 TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TSafePoint* excHandler__rqLlY5bs9atDw2OXYqJEn5g;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_4, "sink", 4);
NIM_CONST tyArray__nHXaesL0DJZHyVS07ARPRA TM__SRd76hP9cMfCzdUO857UhQQ_3 = {((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_4)}
;
NIM_CONST tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg TM__SRd76hP9cMfCzdUO857UhQQ_5 = {((NI) 1), NIM_NIL};
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_6, "old p: ", 7);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_8, "new p: ", 7);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_9, "old value: ", 11);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_10, "new value: ", 11);
STRING_LITERAL(TM__SRd76hP9cMfCzdUO857UhQQ_11, "/home/runner/work/Nim/Nim/temp.nim(20, 12) `newV.p == newV.n.ad"
"dr` ", 67);
static N_INLINE(void, pushSafePoint)(TSafePoint* s) { (*s).hasRaiseAction = NIM_FALSE;
(*s).prev = excHandler__rqLlY5bs9atDw2OXYqJEn5g;
excHandler__rqLlY5bs9atDw2OXYqJEn5g = 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, eqsink___WuHRWIKdmC5QPz5R2ZxCbg)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg* dest, tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg source) { nimfr_("=sink", "/home/runner/work/Nim/Nim/temp.nim");
echoBinSafe(TM__SRd76hP9cMfCzdUO857UhQQ_3, 1);
(*dest).n = source.n;
(*dest).p = (&(*dest).n);
popFrame();
}
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, 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);
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___cNWAXSpFRtj9bkL4Q1ZfdmA)(NI* p) { NimStringDesc* result;
nimfr_("$", "/home/runner/work/Nim/Nim/temp.nim");
result = (NimStringDesc*)0;
result = dollar___RkX9btpg5sQIaP8yYXB6tbA(((NU64) (((NU) (ptrdiff_t) (p)))));
popFrame();
return result;
}
N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___cNWAXSpFRtj9bkL4Q1ZfdmA_2)(NI* p) { NimStringDesc* result;
nimfr_("$", "/home/runner/work/Nim/Nim/temp.nim");
result = (NimStringDesc*)0;
result = dollar___RkX9btpg5sQIaP8yYXB6tbA(((NU64) (((NU) (ptrdiff_t) (p)))));
popFrame();
return result;
}
N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___vyTnmVM4z9adBqAVCMUFGWQ)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg* dest) {}
N_LIB_PRIVATE N_NIMCALL(void, decodeN__VmWgbyObnJU9blGk5yE6Xow)(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg newV) { TSafePoint TM__SRd76hP9cMfCzdUO857UhQQ_7;
TFrame* _nimCurFrame;
nimfr_("decodeN", "/home/runner/work/Nim/Nim/temp.nim");
_nimCurFrame = getFrame();
pushSafePoint(&TM__SRd76hP9cMfCzdUO857UhQQ_7);
TM__SRd76hP9cMfCzdUO857UhQQ_7.status = setjmp(TM__SRd76hP9cMfCzdUO857UhQQ_7.context);
if (TM__SRd76hP9cMfCzdUO857UhQQ_7.status == 0) {
tyArray__Re75IspeoxXy2oCZHwcRrA T2_;
tyArray__Re75IspeoxXy2oCZHwcRrA T3_;
tyArray__Re75IspeoxXy2oCZHwcRrA T4_;
nimZeroMem((void*)T2_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T2_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_8));
T2_[1] = dollar___RkX9btpg5sQIaP8yYXB6tbA(((NU64) (((NU) (ptrdiff_t) (newV.p)))));
echoBinSafe(T2_, 2);
nimZeroMem((void*)T3_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T3_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_9));
T3_[1] = dollar___Ib0RvzV2R9cEkwUHdYL19avA(oldV__AFz13lOl6ux2K6DQb2fYAQ);
echoBinSafe(T3_, 2);
nimZeroMem((void*)T4_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T4_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_10));
T4_[1] = dollar___Ib0RvzV2R9cEkwUHdYL19avA_2(newV);
echoBinSafe(T4_, 2);
{
if (!!((newV.p == (&newV.n)))) goto LA7_;
failedAssertImpl__W9cjVocn1tjhW7p7xohJj6A(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_11));
}
LA7_: ;
popSafePoint();
}
else {
popSafePoint();
setFrame(_nimCurFrame);
}
{
eqdestroy___vyTnmVM4z9adBqAVCMUFGWQ((&newV));
}
if (TM__SRd76hP9cMfCzdUO857UhQQ_7.status != 0) reraiseException();
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();
(*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) {
{
TSafePoint TM__SRd76hP9cMfCzdUO857UhQQ_2;
TFrame* _nimCurFrame;
tyArray__Re75IspeoxXy2oCZHwcRrA T4_;
tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg T5_;
nimfr_("temp", "/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) {
eqsink___WuHRWIKdmC5QPz5R2ZxCbg((&oldV__AFz13lOl6ux2K6DQb2fYAQ), TM__SRd76hP9cMfCzdUO857UhQQ_5);
popSafePoint();
}
else {
popSafePoint();
setFrame(_nimCurFrame);
}
{
}
if (TM__SRd76hP9cMfCzdUO857UhQQ_2.status != 0) reraiseException();
oldV__AFz13lOl6ux2K6DQb2fYAQ.p = (&oldV__AFz13lOl6ux2K6DQb2fYAQ.n);
nimZeroMem((void*)T4_, sizeof(tyArray__Re75IspeoxXy2oCZHwcRrA));
T4_[0] = copyString(((NimStringDesc*) &TM__SRd76hP9cMfCzdUO857UhQQ_6));
T4_[1] = dollar___RkX9btpg5sQIaP8yYXB6tbA(((NU64) (((NU) (ptrdiff_t) (oldV__AFz13lOl6ux2K6DQb2fYAQ.p)))));
echoBinSafe(T4_, 2);
T5_ = oldV__AFz13lOl6ux2K6DQb2fYAQ;
chckNil((void*)(&oldV__AFz13lOl6ux2K6DQb2fYAQ));
nimZeroMem((void*)(&oldV__AFz13lOl6ux2K6DQb2fYAQ), sizeof(tyObject_Obj__aUn5SLDz0QPhgEhlLh33kg));
decodeN__VmWgbyObnJU9blGk5yE6Xow(T5_);
eqdestroy___vyTnmVM4z9adBqAVCMUFGWQ((&oldV__AFz13lOl6ux2K6DQb2fYAQ));
popFrame();
}
}
Stats
- Started
2024-05-08T11:13:22
- Finished
2024-05-08T11:13:22
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Obj"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("n"),
newIdentNode("int"),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("int")
),
newEmptyNode()
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
newIdentNode("pointer"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("$")
)
),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
newIdentNode("string"),
nnkIdentDefs.newTree(
newIdentNode("p"),
nnkPtrTy.newTree(
newIdentNode("T")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkPrefix.newTree(
newIdentNode("$"),
nnkCast.newTree(
newIdentNode("uint"),
newIdentNode("p")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("sink")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("dest"),
nnkVarTy.newTree(
newIdentNode("Obj")
),
newEmptyNode()
),
nnkIdentDefs.newTree(
newIdentNode("source"),
newIdentNode("Obj"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("sink")
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
nnkDotExpr.newTree(
newIdentNode("source"),
newIdentNode("n")
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("dest"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
nnkAccQuoted.newTree(
newIdentNode("="),
newIdentNode("dup")
)
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("Obj"),
nnkIdentDefs.newTree(
newIdentNode("a"),
newIdentNode("Obj"),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("nodestroy")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("dup")
)
)
),
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("oldV"),
newEmptyNode(),
nnkObjConstr.newTree(
newIdentNode("Obj"),
nnkExprColonExpr.newTree(
newIdentNode("n"),
newLit(1)
)
)
)
),
nnkProcDef.newTree(
newIdentNode("decodeN"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("newV"),
nnkCommand.newTree(
newIdentNode("sink"),
newIdentNode("Obj")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
)
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old value: "),
newIdentNode("oldV")
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("new value: "),
newIdentNode("newV")
),
nnkCommand.newTree(
newIdentNode("doAssert"),
nnkInfix.newTree(
newIdentNode("=="),
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("newV"),
newIdentNode("n")
),
newIdentNode("addr")
)
)
)
)
),
nnkAsgn.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
),
nnkDotExpr.newTree(
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("n")
),
newIdentNode("addr")
)
),
nnkCommand.newTree(
newIdentNode("echo"),
newLit("old p: "),
nnkCast.newTree(
newIdentNode("uint"),
nnkDotExpr.newTree(
newIdentNode("oldV"),
newIdentNode("p")
)
)
),
nnkCall.newTree(
newIdentNode("decodeN"),
nnkCommand.newTree(
newIdentNode("move"),
newIdentNode("oldV")
)
)
)
Stats
- GCC
11.4.0
- Clang
14.0.0
- NodeJS
20.2
- Created
2024-05-08T11:12:38Z
- Comments
1
- Commands
nim c --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
🤖 Bug found in 19 minutes
bisecting 7
commits at 0
commits per second
from nim.
Okay, I should turn off this issue.
from nim.
Related Issues (20)
- [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
- Compiler crashes with infinite recursion for nested generic instantiation with static[int]
- The stdout.write doesn't print to terminal until new line symbol is sent HOT 3
- Gc_ref(x: string) and Gc_ref[T](x: seq[T]) doesn't exists anymore ? HOT 2
- tasks.toTask Doesn't Expect a Dot Expression
- [potential bug] SIGILL at `renderer.atom()`
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.