summary refs log tree commit diff
path: root/sysv.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysv.c')
-rw-r--r--sysv.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/sysv.c b/sysv.c
index 5a82f8e..b05510c 100644
--- a/sysv.c
+++ b/sysv.c
@@ -26,8 +26,10 @@ classify(AClass *a, Typ *t, int *pn, int *pe)
 		seg = t->seg[n];
 		for (s=0; *pe<2; (*pe)++) {
 			cls = &a->cls[*pe];
-			for (; *pn<8 && seg[s].type!=Send; s++) {
+			for (; *pn<8; s++) {
 				switch (seg[s].type) {
+				case Send:
+					goto Done;
 				case Spad:
 					/* don't change anything */
 					break;
@@ -44,6 +46,7 @@ classify(AClass *a, Typ *t, int *pn, int *pe)
 				}
 				*pn += seg[s].len;
 			}
+		Done:
 			assert(*pn <= 8);
 			*pn = 0;
 		}