changeset 1513:45c339264b57

[Issue 1125] Segfault using tuple in asm code, when size not specified Don Clugston <clugdbug@yahoo.com.au> 2007-04-11 http://d.puremagic.com/issues/show_bug.cgi?id=1125
author thomask
date Mon, 23 Apr 2007 18:09:16 +0000
parents b171e38c078b
children 891196dcfc3a
files run/t/tuple_23_A.d run/t/tuple_23_B.d run/t/tuple_23_C.d
diffstat 3 files changed, 116 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /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 <clugdbug@yahoo.com.au>
+// @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");
+}
--- /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 <clugdbug@yahoo.com.au>
+// @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");
+}
--- /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 <clugdbug@yahoo.com.au>
+// @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");
+}