-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Calling a proc inside a tuple inside a literal array, Nim compiler generates invalid C code #20544
Labels
Comments
This was referenced Oct 25, 2022
!nim c type
F = proc()
T = tuple[c: F]
const
f: F = proc() = discard
myTuple: T = (c: f)
myLiteralArray: array[1, T] = [myTuple]
myLiteralArray[0].c() |
@juancarlospaco (contributor) devel :-1: FAILOutput
Stats
IR#define NIM_INTBITS 64
#include "nimbase.h"
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
#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 N_CLOSURE_PTR(void, TM__SRd76hP9cMfCzdUO857UhQQ_2) (void);
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___temp_u7)(void);
static N_INLINE(void, nimFrame)(TFrame* s_p0);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_u4483)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, nimTestErrorFlag)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TFrame* framePtr__system_u3877;
extern NIM_BOOL nimInErrorMode__system_u4265;
static N_INLINE(void, nimFrame)(TFrame* s_p0) {
{
if (!(framePtr__system_u3877 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s_p0).calldepth = ((NI16)0);
}
goto LA1_;
LA3_: ;
{
(*s_p0).calldepth = (NI16)((*framePtr__system_u3877).calldepth + ((NI16)1));
}
LA1_: ;
(*s_p0).prev = framePtr__system_u3877;
framePtr__system_u3877 = s_p0;
{
if (!((*s_p0).calldepth == ((NI16)2000))) goto LA8_;
callDepthLimitReached__system_u4483();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_u3877 = (*framePtr__system_u3877).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___temp_u7)(void) {
nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) {
NIM_BOOL* result;
result = (NIM_BOOL*)0;
result = (&nimInErrorMode__system_u4265);
return result;
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
#if 0
void (*volatile inner)(void);
inner = PreMainInner;
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
(*inner)();
#else
atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminusathdevelatslibatssystemdotnim_Init000();
PreMainInner();
#endif
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
#if 0
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
(*inner)();
#else
PreMain();
NimMainInner();
#endif
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
NIM_BOOL* nimErr_;
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
nimErr_ = nimErrorFlag();
colonanonymous___temp_u7.ClE_0? colonanonymous___temp_u7.ClP_0(colonanonymous___temp_u7.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_2)(colonanonymous___temp_u7.ClP_0))();
if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_;
BeforeRet_: ;
nimTestErrorFlag();
popFrame();
}
} ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("F"),
newEmptyNode(),
nnkProcTy.newTree(
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
newIdentNode("T"),
newEmptyNode(),
nnkTupleTy.newTree(
nnkIdentDefs.newTree(
newIdentNode("c"),
newIdentNode("F"),
newEmptyNode()
)
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("f"),
newIdentNode("F"),
nnkLambda.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
),
nnkConstDef.newTree(
newIdentNode("myTuple"),
newIdentNode("T"),
nnkTupleConstr.newTree(
nnkExprColonExpr.newTree(
newIdentNode("c"),
newIdentNode("f")
)
)
),
nnkConstDef.newTree(
newIdentNode("myLiteralArray"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(1),
newIdentNode("T")
),
nnkBracket.newTree(
newIdentNode("myTuple")
)
)
),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("myLiteralArray"),
newLit(0)
),
newIdentNode("c")
)
)
) stable :-1: FAILOutput
Stats
IR#define NIM_INTBITS 64
#include "nimbase.h"
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
# 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 N_CLOSURE_PTR(void, TM__SRd76hP9cMfCzdUO857UhQQ_2) (void);
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___temp_7)(void);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__system_2997)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_DatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatsdotdotatsdotdotatsdotchoosenimatstoolchainsatsnimminus1dot6dot14atslibatssystemdotnim_Init000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
extern TFrame* framePtr__system_2564;
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr__system_2564 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr__system_2564).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr__system_2564;
framePtr__system_2564 = s;
{
if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
callDepthLimitReached__system_2997();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__system_2564 = (*framePtr__system_2564).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___temp_7)(void) {
nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
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) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
colonanonymous___temp_7.ClE_0? colonanonymous___temp_7.ClP_0(colonanonymous___temp_7.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_2)(colonanonymous___temp_7.ClP_0))();
popFrame();
}
} ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("F"),
newEmptyNode(),
nnkProcTy.newTree(
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
newIdentNode("T"),
newEmptyNode(),
nnkTupleTy.newTree(
nnkIdentDefs.newTree(
newIdentNode("c"),
newIdentNode("F"),
newEmptyNode()
)
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("f"),
newIdentNode("F"),
nnkLambda.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
),
nnkConstDef.newTree(
newIdentNode("myTuple"),
newIdentNode("T"),
nnkTupleConstr.newTree(
nnkExprColonExpr.newTree(
newIdentNode("c"),
newIdentNode("f")
)
)
),
nnkConstDef.newTree(
newIdentNode("myLiteralArray"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(1),
newIdentNode("T")
),
nnkBracket.newTree(
newIdentNode("myTuple")
)
)
),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("myLiteralArray"),
newLit(0)
),
newIdentNode("c")
)
)
) 1.6.0 :-1: FAILOutput
Stats
IR#define NIM_INTBITS 64
#include "nimbase.h"
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
# 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 N_CLOSURE_PTR(void, TM__SRd76hP9cMfCzdUO857UhQQ_2) (void);
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous__temp_7)(void);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached_system_2997)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TFrame* framePtr_system_2564;
extern TFrame* framePtr_system_2564;
extern TFrame* framePtr_system_2564;
extern TFrame* framePtr_system_2564;
extern TFrame* framePtr_system_2564;
extern TFrame* framePtr_system_2564;
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr_system_2564 == ((TFrame*) NIM_NIL))) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr_system_2564).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr_system_2564;
framePtr_system_2564 = s;
{
if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
callDepthLimitReached_system_2997();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr_system_2564 = (*framePtr_system_2564).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous__temp_7)(void) {
nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
void (*volatile inner)(void);
inner = PreMainInner;
systemDatInit000();
initStackBottomWith((void *)&inner);
systemInit000();
(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
colonanonymous__temp_7.ClE_0? colonanonymous__temp_7.ClP_0(colonanonymous__temp_7.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_2)(colonanonymous__temp_7.ClP_0))();
popFrame();
}
} ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("F"),
newEmptyNode(),
nnkProcTy.newTree(
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
newIdentNode("T"),
newEmptyNode(),
nnkTupleTy.newTree(
nnkIdentDefs.newTree(
newIdentNode("c"),
newIdentNode("F"),
newEmptyNode()
)
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("f"),
newIdentNode("F"),
nnkLambda.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
),
nnkConstDef.newTree(
newIdentNode("myTuple"),
newIdentNode("T"),
nnkTupleConstr.newTree(
nnkExprColonExpr.newTree(
newIdentNode("c"),
newIdentNode("f")
)
)
),
nnkConstDef.newTree(
newIdentNode("myLiteralArray"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(1),
newIdentNode("T")
),
nnkBracket.newTree(
newIdentNode("myTuple")
)
)
),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("myLiteralArray"),
newLit(0)
),
newIdentNode("c")
)
)
) 1.4.0 :-1: FAILOutput
Stats
IR
#define NIM_INTBITS 64
#include "nimbase.h"
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
# 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 N_CLOSURE_PTR(void, TM__SRd76hP9cMfCzdUO857UhQQ_2) (void);
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___EzBZaa239as9bFx8yeHDoTOw)(void);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
{
if (!((*s).calldepth == ((NI16) 2000))) goto LA8_;
callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___EzBZaa239as9bFx8yeHDoTOw)(void) {
nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
void (*volatile inner)(void);
inner = PreMainInner;
systemDatInit000();
initStackBottomWith((void *)&inner);
systemInit000();
(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClE_0? colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClP_0(colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_2)(colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClP_0))();
popFrame();
}
} ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("F"),
newEmptyNode(),
nnkProcTy.newTree(
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
newIdentNode("T"),
newEmptyNode(),
nnkTupleTy.newTree(
nnkIdentDefs.newTree(
newIdentNode("c"),
newIdentNode("F"),
newEmptyNode()
)
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("f"),
newIdentNode("F"),
nnkLambda.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
),
nnkConstDef.newTree(
newIdentNode("myTuple"),
newIdentNode("T"),
nnkPar.newTree(
nnkExprColonExpr.newTree(
newIdentNode("c"),
newIdentNode("f")
)
)
),
nnkConstDef.newTree(
newIdentNode("myLiteralArray"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(1),
newIdentNode("T")
),
nnkBracket.newTree(
newIdentNode("myTuple")
)
)
),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("myLiteralArray"),
newLit(0)
),
newIdentNode("c")
)
)
) 1.2.0 :-1: FAILOutput
Stats
IR
#define NIM_INTBITS 64
#include "nimbase.h"
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
# 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 N_CLOSURE_PTR(void, TM__SRd76hP9cMfCzdUO857UhQQ_2) (void);
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___EzBZaa239as9bFx8yeHDoTOw)(void);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_LIB_PRIVATE N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
static N_INLINE(void, nimFrame)(TFrame* s) {
{
if (!(framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw == NIM_NIL)) goto LA3_;
(*s).calldepth = ((NI16) 0);
}
goto LA1_;
LA3_: ;
{
(*s).calldepth = (NI16)((*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).calldepth + ((NI16) 1));
}
LA1_: ;
(*s).prev = framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = s;
{
if (!((*s).calldepth == ((NI16) (((NI) 2000))))) goto LA8_;
callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw();
}
LA8_: ;
}
static N_INLINE(void, popFrame)(void) {
framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw = (*framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw).prev;
}
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___EzBZaa239as9bFx8yeHDoTOw)(void) {
nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
popFrame();
}
static N_INLINE(void, initStackBottomWith)(void* locals) {
nimGC_setStackBottom(locals);
}
N_LIB_PRIVATE void PreMainInner(void) {
}
N_LIB_PRIVATE int cmdCount;
N_LIB_PRIVATE char** cmdLine;
N_LIB_PRIVATE char** gEnv;
N_LIB_PRIVATE void PreMain(void) {
void (*volatile inner)(void);
inner = PreMainInner;
systemDatInit000();
initStackBottomWith((void *)&inner);
systemInit000();
(*inner)();
}
N_LIB_PRIVATE N_CDECL(void, NimMainInner)(void) {
NimMainModule();
}
N_CDECL(void, NimMain)(void) {
void (*volatile inner)(void);
PreMain();
inner = NimMainInner;
initStackBottomWith((void *)&inner);
(*inner)();
}
int main(int argc, char** args, char** env) {
cmdLine = args;
cmdCount = argc;
gEnv = env;
NimMain();
return nim_program_result;
}
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClE_0? colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClP_0(colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_2)(colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClP_0))();
popFrame();
}
} ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("F"),
newEmptyNode(),
nnkProcTy.newTree(
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
newIdentNode("T"),
newEmptyNode(),
nnkTupleTy.newTree(
nnkIdentDefs.newTree(
newIdentNode("c"),
newIdentNode("F"),
newEmptyNode()
)
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("f"),
newIdentNode("F"),
nnkLambda.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
),
nnkConstDef.newTree(
newIdentNode("myTuple"),
newIdentNode("T"),
nnkPar.newTree(
nnkExprColonExpr.newTree(
newIdentNode("c"),
newIdentNode("f")
)
)
),
nnkConstDef.newTree(
newIdentNode("myLiteralArray"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(1),
newIdentNode("T")
),
nnkBracket.newTree(
newIdentNode("myTuple")
)
)
),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("myLiteralArray"),
newLit(0)
),
newIdentNode("c")
)
)
) 1.0.0 :-1: FAILOutput
Stats
IR
#define NIM_INTBITS 64
#include "nimbase.h"
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
# 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 N_CLOSURE_PTR(void, TM__SRd76hP9cMfCzdUO857UhQQ_2) (void);
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___EzBZaa239as9bFx8yeHDoTOw)(void);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
static N_INLINE(void, nimFrame)(TFrame* s) {
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, colonanonymous___EzBZaa239as9bFx8yeHDoTOw)(void) {
nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
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) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClE_0? colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClP_0(colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_2)(colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClP_0))();
popFrame();
}
} ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("F"),
newEmptyNode(),
nnkProcTy.newTree(
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
newIdentNode("T"),
newEmptyNode(),
nnkTupleTy.newTree(
nnkIdentDefs.newTree(
newIdentNode("c"),
newIdentNode("F"),
newEmptyNode()
)
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("f"),
newIdentNode("F"),
nnkLambda.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
),
nnkConstDef.newTree(
newIdentNode("myTuple"),
newIdentNode("T"),
nnkPar.newTree(
nnkExprColonExpr.newTree(
newIdentNode("c"),
newIdentNode("f")
)
)
),
nnkConstDef.newTree(
newIdentNode("myLiteralArray"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(1),
newIdentNode("T")
),
nnkBracket.newTree(
newIdentNode("myTuple")
)
)
),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("myLiteralArray"),
newLit(0)
),
newIdentNode("c")
)
)
) 0.20.2 :-1: FAILOutput
Stats
IR
#define NIM_INTBITS 64
#include "nimbase.h"
#undef LANGUAGE_C
#undef MIPSEB
#undef MIPSEL
#undef PPC
#undef R3000
#undef R4000
#undef i386
#undef linux
#undef mips
#undef near
#undef far
#undef powerpc
#undef unix
# 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 N_CLOSURE_PTR(void, TM__SRd76hP9cMfCzdUO857UhQQ_2) (void);
N_LIB_PRIVATE N_NIMCALL(void, colonanonymous___EzBZaa239as9bFx8yeHDoTOw)(void);
static N_INLINE(void, nimFrame)(TFrame* s);
N_LIB_PRIVATE N_NOINLINE(void, callDepthLimitReached__mMRdr4sgmnykA9aWeM9aDZlw)(void);
static N_INLINE(void, popFrame)(void);
static N_INLINE(void, initStackBottomWith)(void* locals);
N_NOINLINE(void, nimGC_setStackBottom)(void* theStackBottom);
N_LIB_PRIVATE N_NIMCALL(void, systemDatInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, systemInit000)(void);
N_LIB_PRIVATE N_NIMCALL(void, NimMainModule)(void);
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
extern TFrame* framePtr__HRfVMH3jYeBJz6Q6X9b6Ptw;
static N_INLINE(void, nimFrame)(TFrame* s) {
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, colonanonymous___EzBZaa239as9bFx8yeHDoTOw)(void) {
nimfr_(":anonymous", "/home/runner/work/Nim/Nim/temp.nim");
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) {
{
nimfr_("temp", "/home/runner/work/Nim/Nim/temp.nim");
colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClE_0? colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClP_0(colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClE_0):((TM__SRd76hP9cMfCzdUO857UhQQ_2)(colonanonymous___EzBZaa239as9bFx8yeHDoTOw.ClP_0))();
popFrame();
}
} ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("F"),
newEmptyNode(),
nnkProcTy.newTree(
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode()
)
),
nnkTypeDef.newTree(
newIdentNode("T"),
newEmptyNode(),
nnkTupleTy.newTree(
nnkIdentDefs.newTree(
newIdentNode("c"),
newIdentNode("F"),
newEmptyNode()
)
)
)
),
nnkConstSection.newTree(
nnkConstDef.newTree(
newIdentNode("f"),
newIdentNode("F"),
nnkLambda.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode()
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
),
nnkConstDef.newTree(
newIdentNode("myTuple"),
newIdentNode("T"),
nnkPar.newTree(
nnkExprColonExpr.newTree(
newIdentNode("c"),
newIdentNode("f")
)
)
),
nnkConstDef.newTree(
newIdentNode("myLiteralArray"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newLit(1),
newIdentNode("T")
),
nnkBracket.newTree(
newIdentNode("myTuple")
)
)
),
nnkCall.newTree(
nnkDotExpr.newTree(
nnkBracketExpr.newTree(
newIdentNode("myLiteralArray"),
newLit(0)
),
newIdentNode("c")
)
)
) 58 minutes bisecting 7 commits at 0 commits per second.
|
When giving |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
What happened?
This gives me compile-time errors from gcc. Two questions:
Nim Version
Nim Compiler Version 1.7.3 [Linux: amd64]
Compiled at 2022-10-10
Copyright (c) 2006-2022 by Andreas Rumpf
git hash: 1f20750
active boot switches: -d:release
Current Standard Output Logs
No response
Expected Standard Output Logs
No response
Possible Solution
No response
Additional Information
No response
The text was updated successfully, but these errors were encountered: