diff mc-codegen.c @ 536:a349f9c2aef5 inline-test-passed

MIPS set_ireg/lreg interferance
author kono
date Sat, 31 Dec 2005 14:26:40 +0900
parents 0f24e1dba811
children a6c9ffbf3f08
line wrap: on
line diff
--- a/mc-codegen.c	Sat Dec 31 03:14:03 2005 +0900
+++ b/mc-codegen.c	Sat Dec 31 14:26:40 2005 +0900
@@ -3135,7 +3135,7 @@
 	str_ret.dsp = 0; str_ret.ty = 0;
 	type=list2(POINTER,t);
 	/* fix all argument's offset */
-	sz = size(type);
+	sz = inmode?1:size(type);
 	for(t=fnptr->dsp;t;t=cadr(t)) {
 	    n=(NMTBL *)caddr(t);
 	    n->dsp += sz;
@@ -3145,7 +3145,9 @@
 	else {
 	    args = 0;
 	    def(&str_ret,0);
-	    struct_return = list3(list3(LVAR,str_ret.dsp,0),sz,type);
+	    struct_return = inmode
+		?list3(list3(IVAR,str_ret.dsp,0),sz,type)
+		:list3(list3(LVAR,str_ret.dsp,0),sz,type);
 	    caddr(fnptr->ty) = glist2(POINTER,caddr(fnptr->ty));
 	}
 	type = type_save;