(split off from bug 5264)
module hrm;
struct BlkInfo { size_t size; }
extern (C) BlkInfo gc_qalloc();
void __setArrayAllocLength(ref BlkInfo info)
{
if(info.size) {}
}
extern (C) void foo()
{
BlkInfo info = gc_qalloc();
__setArrayAllocLength(info);
}
$ dmd -m64 -c hrm.d
Internal error: backend/cod1.c 2554
(same error and line number for both dmd1 and dmd2 from tip of svn for both)
call cleanup code in cod1.c funccall():
2936 if (tym1 == TYhfunc)
2937 { // Hidden parameter is popped off by the callee
2938 c = genadjesp(c, -4);
2939 stackpush -= 4;
This code isn't aware of the 32 vs 64 bit calling convention differences yet?