[Issue 915] New: dmd generate bad form return(retn 4) for invariant func
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Feb 1 05:55:38 PST 2007
http://d.puremagic.com/issues/show_bug.cgi?id=915
Summary: dmd generate bad form return(retn 4) for invariant func
Product: D
Version: 1.004
Platform: PC
OS/Version: Windows
Status: NEW
Severity: critical
Priority: P1
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: davidl at 126.com
import std.stdio;
interface IUnknown{
extern(Windows):
void func();
}
class ComObject :IUnknown
{
extern (Windows):
void func()
{writefln(`comobject`);
}
}
interface IDataObject: IUnknown
{
extern(Windows):
void method();
}
package class invarianttest:ComObject, IDataObject
{
invariant
{
writefln(`hello invariant`);
}
extern (Windows):
override void func()
{
int esp;
asm{
mov esp,ESP;
}
printf("\n%d",esp);
printf(`func`);
}
void method()
{
writefln(`method`);
}
}
void main()
{
auto inst= new invarianttest;
int esp;
asm{
mov esp,ESP;
}
inst.func();
inst.method();
writefln("\n%d",esp);
asm{
mov esp,ESP;
}
writefln("\n%d",esp);
}
we get runtime AV when the we return from our own invariant to _d_invariant
the problem is dmd generate the retn 4 for the return of our own invariant func
--
More information about the Digitalmars-d-bugs
mailing list