diff gen/d-asm-i386.h @ 221:68687d8c3e9a trunk

[svn r237] some inline asm output now seems to work, see tangotests/asm2.d
author lindquist
date Fri, 06 Jun 2008 20:51:43 +0200
parents ccc2e6898a78
children 251548c1035d
line wrap: on
line diff
--- a/gen/d-asm-i386.h	Fri Jun 06 20:14:51 2008 +0200
+++ b/gen/d-asm-i386.h	Fri Jun 06 20:51:43 2008 +0200
@@ -1855,8 +1855,12 @@
 			    ((operand->baseReg == Reg_EBP && ! sc->func->naked ) ||
 				(operand->baseReg == Reg_ESP && sc->func->naked)) ) {
 
-			    e = new AddrExp(0, e);
-			    e->type = decl->type->pointerTo();
+                if (mode == Mode_Output)
+                {
+                    e = new AddrExp(0, e);
+                    e->type = decl->type->pointerTo();
+                }
+
 #if !IN_LLVM
 			    /* DMD uses the same frame offsets for naked functions. */
 			    if (sc->func->naked)
@@ -1909,6 +1913,12 @@
 				insnTemplate->writebyte('*');
 				use_star = false;
 			    }
+                if (mode == Mode_Output)
+                {
+                    e = new AddrExp(0, e);
+                    assert(decl);
+                    e->type = decl->type->pointerTo();
+                }
 			    addOperand(fmt, Arg_Memory, e, asmcode, mode);
 			}
 		    }