D.gnu - [Issue 1036] New: regression: invalid code generation for class literal expression unless -fPIC or -release is used
- d-bugmail puremagic.com (48/48) Mar 07 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1036
- d-bugmail puremagic.com (19/19) Mar 11 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1036
- d-bugmail puremagic.com (4/4) Mar 11 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1036
http://d.puremagic.com/issues/show_bug.cgi?id=1036 Summary: regression: invalid code generation for class literal expression unless -fPIC or -release is used Product: DGCC aka GDC Version: unspecified Platform: PC OS/Version: Linux Status: NEW Severity: normal Priority: P3 Component: glue layer AssignedTo: dvdfrdmn users.sf.net ReportedBy: thomas-dloop kuehne.cn gdmd-0.23 run/c/class_26_B.d -ofx && ./x -> Error: AssertError Failure run/c/class_26_B.d(32) gdmd-0.23 run/c/class_26_B.d -fPIC -ofx && ./x -> success test case: http://dstress.kuehne.cn/run/c/class_26_B.d --
Mar 07 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1036 dvdfrdmn users.sf.net changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID Exiting from 'foo' invalidates the anonymous class' link to 'status'. The correct way to do this is to have a direct pointer to the outer stack frame: return &(new class { int *p_status; this() { p_status = & status; } int dg() { return ++ *p_status; } } ).dg; --
Mar 11 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1036 Thanks, fixed --
Mar 11 2007