diff mc-code-ia32.c @ 693:e5a498eab0f4

*** empty log message ***
author kono
date Sat, 13 Oct 2007 18:49:28 +0900
parents baa67e2e54d2
children 22e0330a6d5b
line wrap: on
line diff
--- a/mc-code-ia32.c	Fri Oct 12 21:40:45 2007 +0900
+++ b/mc-code-ia32.c	Sat Oct 13 18:49:28 2007 +0900
@@ -1849,17 +1849,17 @@
             if (e5) { // compute address only, complex_ is me now. Clear it.
                 complex_ = 0;
                 e4 = car(e3);
-                if (car(e4)!=RSTRUCT) error(-1);
-                if (!simple_arg(cadr(e4))) {
+                if (car(e4)==RSTRUCT) e4 = cadr(e4);
+                if (!simple_arg(e4)) {
                     // Calculate complex struct address here.
                     // If simple, leave it.
                     arg = get_register_var(0);
 #if ARG_ORDER==1
 		    delayed_arg = list2(
-			assign_expr0(arg,list2(ADDRESS,car(e3)),INT,INT),
+			assign_expr0(arg,e4,INT,INT),
 			delayed_arg);
 #else
-                    g_expr_u(assign_expr0(arg,list2(ADDRESS,car(e3)),INT,INT));
+                    g_expr_u(assign_expr0(arg,e4,INT,INT));
 #endif
                     car(e3)=arg;
                     reg_arg_list = list2(arg,reg_arg_list);