# HG changeset patch # User thomask # Date 1177351756 0 # Node ID 45c339264b575b1e222fd206ba881f9733b22781 # Parent b171e38c078b170bc2fb450a67d5626f18dac6d1 [Issue 1125] Segfault using tuple in asm code, when size not specified Don Clugston 2007-04-11 http://d.puremagic.com/issues/show_bug.cgi?id=1125 diff -r b171e38c078b -r 45c339264b57 run/t/tuple_23_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/t/tuple_23_A.d Mon Apr 23 18:09:16 2007 +0000 @@ -0,0 +1,36 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Don Clugston +// @date@ 2007-04-11 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1125 +// @desc@ [Issue 1125] Segfault using tuple in asm code, when size not specified + +module dstress.run.t.tuple_23_A; + +version(D_InlineAsm_X86){ + version = test; +}else version(D_InlineAsm_X86_64){ + version = test; +} + +version(test){ + int foo(X...)(X expr){ + int i; + asm{ + mov EAX, int ptr expr[0]; + mov i, EAX; + } + return i; + } + + int main(){ + if(3 != foo(3)){ + assert(0); + } + return 0; + } +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline X86 ASM support"); +} diff -r b171e38c078b -r 45c339264b57 run/t/tuple_23_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/t/tuple_23_B.d Mon Apr 23 18:09:16 2007 +0000 @@ -0,0 +1,36 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Don Clugston +// @date@ 2007-04-11 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1125 +// @desc@ [Issue 1125] Segfault using tuple in asm code, when size not specified + +module dstress.run.t.tuple_23_B; + +version(D_InlineAsm_X86){ + version = test; +}else version(D_InlineAsm_X86_64){ + version = test; +} + +version(test){ + int foo(X...)(X expr){ + int i; + asm{ + mov EAX, expr[0]; + mov i, EAX; + } + return i; + } + + int main(){ + if(3 != foo(3)){ + assert(0); + } + return 0; + } +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline X86 ASM support"); +} diff -r b171e38c078b -r 45c339264b57 run/t/tuple_23_C.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/t/tuple_23_C.d Mon Apr 23 18:09:16 2007 +0000 @@ -0,0 +1,44 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Don Clugston +// @date@ 2007-04-11 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1125 +// @desc@ [Issue 1125] Segfault using tuple in asm code, when size not specified + +module dstress.run.t.tuple_23_C; + +version(D_InlineAsm_X86){ + version = test; +}else version(D_InlineAsm_X86_64){ + version = test; +} + +version(test){ + struct S{ + int a; + int b; + } + + int foo(X...)(X expr){ + int i; + asm{ + mov EAX, expr[0].a; + mov i, EAX; + } + return i; + } + + const S s = {3, 0xCAFFEE}; + + int main(){ + + if(3 != foo(s)){ + assert(0); + } + return 0; + } +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline X86 ASM support"); +}