diff mc-inline.c @ 528:d6fff671793a

minor fix inline
author kono
date Thu, 29 Dec 2005 01:10:01 +0900
parents 6b0fd56848e6
children ad874ef77dde
line wrap: on
line diff
--- a/mc-inline.c	Wed Dec 28 21:21:57 2005 +0900
+++ b/mc-inline.c	Thu Dec 29 01:10:01 2005 +0900
@@ -589,6 +589,9 @@
     // in real partial evaluation, we have to check whether this variable
     // is used or not.
     switch(stmode) {
+    case EXTRN: case EXTRN1: case STATIC:
+	    return pexpr(cadr(e));
+#if 0
     case REGISTER:
 	switch(n->ty) {
 	case ULONGLONG: case LONGLONG:
@@ -603,8 +606,7 @@
 	    else
 		error(TYERR);
 	}
-    case EXTRN: case EXTRN1: case STATIC:
-	    return pexpr(cadr(e));
+#endif
     default:
 	v = list3(LVAR,new_lvar(size(n->ty)),(int)n);
     }
@@ -930,7 +932,7 @@
     case LADD: case LSUB: case LBAND: case LEOR: case LBOR: case LCMP:
 #endif
 	return pbinop(car(e1),e2,caddr(e1));
-    case LCOND: case DCOND: case FCOND: case COND:
+    case LCOND: case DCOND: case FCOND: case COND: case UCOND: case LUCOND:
 	e3 = pexpr(e2);
 	if (car(e3)==CONST) return pexpr(cadr(e3)?caddr(e1):cadddr(e1));
 	return list4(car(e1),e3,pexpr(cadr(e1)),pexpr(cadr(e2)));
@@ -1031,6 +1033,7 @@
     int sret_register = ret_register;
     int sret_reg_mode = ret_reg_mode;
     int sinline_lvars = inline_lvars;
+    int slfree=lfree;
 
     int narg,arg;
     NMTBL *n = (NMTBL*)cadr(cadr(e));
@@ -1119,6 +1122,7 @@
     ret_register = sret_register;
     ret_reg_mode = sret_reg_mode;
     inline_lvars = sinline_lvars;
+    lfree=slfree;
 
     return ret_type;
 }