changeset 1495:7a686112b047

[Issue 1172] Inline assembler: cannot access member of templated aggregate directly Matti Niemenmaa <deewiant@gmail.com> 2007-04-21 http://d.puremagic.com/issues/show_bug.cgi?id=1172
author thomask
date Mon, 23 Apr 2007 17:54:56 +0000
parents f39a9d671323
children 64151e92e113
files run/a/asm_04_A.d run/a/asm_04_B.d run/a/asm_04_C.d run/a/asm_04_D.d
diffstat 4 files changed, 176 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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 <deewiant@gmail.com>
+// @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;
+	}
+}
--- /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 <deewiant@gmail.com>
+// @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;
+	}
+}
--- /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 <deewiant@gmail.com>
+// @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;
+	}
+}
--- /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 <deewiant@gmail.com>
+// @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;
+	}
+}