another both sides functions

SVN=125230
diff --git a/src/cmd/6g/cgen.c b/src/cmd/6g/cgen.c
index c0e6853..b8c49b4 100644
--- a/src/cmd/6g/cgen.c
+++ b/src/cmd/6g/cgen.c
@@ -29,8 +29,10 @@
 		if(n->op == OINDREG)
 			fatal("cgen: this is going to misscompile");
 		if(res->ullman >= UINF) {
-			dump("fncalls", n);
-			fatal("cgen: node and result functions");
+			tempname(&n1, n->type);
+			cgen(n, &n1);
+			cgen(&n1, res);
+			goto ret;
 		}
 	}
 
@@ -45,7 +47,7 @@
 			cgen(n, &n1);
 			cgen(&n1, res);
 			regfree(&n1);
-			return;
+			goto ret;
 		}
 
 		igen(res, &n1, N);
diff --git a/src/cmd/6g/gen.c b/src/cmd/6g/gen.c
index 36e0ea9..f4b8652 100644
--- a/src/cmd/6g/gen.c
+++ b/src/cmd/6g/gen.c
@@ -746,7 +746,12 @@
 	nr = n->right;
 
 	if(nr->ullman >= UINF && nl->ullman >= UINF) {
-		fatal("cgen_asop: both sides call");
+		tempname(&n1, nr->type);
+		cgen(nr, &n1);
+		n2 = *n;
+		n2.right = &n1;
+		cgen_asop(&n2);
+		return;
 	}
 
 	if(nr->ullman > nl->ullman) {
@@ -881,9 +886,6 @@
 		ullmancalc(nr);
 	}
 
-	if(nr->ullman >= UINF && nl->ullman >= UINF) {
-		fatal("cgen_as both sides call");
-	}
 	cgen(nr, nl);
 
 ret: