# HG changeset patch # User thomask # Date 1177350896 0 # Node ID 7a686112b04744d10db6eddb0674749ad8033fe9 # Parent f39a9d671323455b3b07ada9f1c64623de51360b [Issue 1172] Inline assembler: cannot access member of templated aggregate directly Matti Niemenmaa 2007-04-21 http://d.puremagic.com/issues/show_bug.cgi?id=1172 diff -r f39a9d671323 -r 7a686112b047 run/a/asm_04_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_04_A.d Mon Apr 23 17:54:56 2007 +0000 @@ -0,0 +1,43 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Matti Niemenmaa +// @date@ 2007-04-21 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1172 +// @desc@ [Issue 1172] Inline assembler: cannot access member of templated aggregate directly + +module dstress.run.a.asm_04_A; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline ASM support"); +} + +version(runTest){ + struct Foo(T){ + int a; + } + + int main(){ + int bar; + + Foo!(int) foo; + foo.a = 0xFEDC_BA09; + + asm{ + lea EAX, foo; + mov ECX, Foo!(int).a[EAX]; + mov bar, ECX; + } + + if(0xFEDC_BA09 != bar){ + assert(0); + } + + return 0; + } +} diff -r f39a9d671323 -r 7a686112b047 run/a/asm_04_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_04_B.d Mon Apr 23 17:54:56 2007 +0000 @@ -0,0 +1,45 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Matti Niemenmaa +// @date@ 2007-04-21 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1172 +// @desc@ [Issue 1172] Inline assembler: cannot access member of templated aggregate directly + +module dstress.run.a.asm_04_B; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline ASM support"); +} + +version(runTest){ + struct Foo(T){ + int a; + } + + alias Foo!(int) X; + + int main(){ + int bar; + + X foo; + foo.a = 0xFEDC_BA09; + + asm{ + lea EAX, foo; + mov ECX, X.a[EAX]; + mov bar, ECX; + } + + if(0xFEDC_BA09 != bar){ + assert(0); + } + + return 0; + } +} diff -r f39a9d671323 -r 7a686112b047 run/a/asm_04_C.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_04_C.d Mon Apr 23 17:54:56 2007 +0000 @@ -0,0 +1,45 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Matti Niemenmaa +// @date@ 2007-04-21 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1172 +// @desc@ [Issue 1172] Inline assembler: cannot access member of templated aggregate directly + +module dstress.run.a.asm_04_C; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline ASM support"); +} + +version(runTest){ + union Foo(T){ + int a; + } + + alias Foo!(int) X; + + int main(){ + int bar; + + X foo; + foo.a = 0xFEDC_BA09; + + asm{ + lea EAX, foo; + mov ECX, X.a[EAX]; + mov bar, ECX; + } + + if(0xFEDC_BA09 != bar){ + assert(0); + } + + return 0; + } +} diff -r f39a9d671323 -r 7a686112b047 run/a/asm_04_D.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/a/asm_04_D.d Mon Apr 23 17:54:56 2007 +0000 @@ -0,0 +1,43 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Matti Niemenmaa +// @date@ 2007-04-21 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1172 +// @desc@ [Issue 1172] Inline assembler: cannot access member of templated aggregate directly + +module dstress.run.a.asm_04_D; + +version(D_InlineAsm_X86){ + version = runTest; +}else version(D_InlineAsm_X86_64){ + version = runTest; +}else{ + static assert(0, "DSTRESS{XFAIL}: no inline ASM support"); +} + +version(runTest){ + union Foo(T){ + int a; + } + + int main(){ + int bar; + + Foo!(int) foo; + foo.a = 0xFEDC_BA09; + + asm{ + lea EAX, foo; + mov ECX, Foo!(int).a[EAX]; + mov bar, ECX; + } + + if(0xFEDC_BA09 != bar){ + assert(0); + } + + return 0; + } +}