diff tests/mini/asm6.d @ 1215:08f87d8cd101

Fix some unittests for 64-bit asm. They were operating on int variables as if they were longs. This was causing asm1_1 to fail when compiled with -O3 because it was overwriting the spilled value of callee-saved register %rbx, which the runtime was using as a pointer value at the time.
author Frits van Bommel <fvbommel wxs.nl>
date Mon, 13 Apr 2009 17:42:36 +0200
parents 4c524d80e6e1
children
line wrap: on
line diff
--- a/tests/mini/asm6.d	Mon Apr 13 16:16:03 2009 +0200
+++ b/tests/mini/asm6.d	Mon Apr 13 17:42:36 2009 +0200
@@ -1,31 +1,25 @@
 extern(C) int printf(char*, ...);
 
+version (D_InlineAsm_X86)
+    version = InlineAsm_X86_Any;
+version (D_InlineAsm_X86_64)
+    version = InlineAsm_X86_Any;
+
 void main()
 {
     int a,b,c;
     a = int.max-1;
     b = 5;
-    version (D_InlineAsm_X86)
+    version (InlineAsm_X86_Any)
     {
-	asm
-    	{
-		mov EAX, a;
-        	mov ECX, b;
-        	add EAX, ECX;
-        	jo Loverflow;
-        	mov c, EAX;
-    	}
-    }
-    else version (D_InlineAsm_X86_64)
-    {
-	asm
-	{
-		movq RDX, a;
-        	movq RAX, b;
-        	add RDX, RAX;
-        	jo Loverflow;
-        	movq c, RDX;
-	}
+        asm
+        {
+            mov EAX, a;
+            mov ECX, b;
+            add EAX, ECX;
+            jo Loverflow;
+            mov c, EAX;
+        }
     }
     printf("a == %d\n", a);
     printf("b == %d\n", b);