shithub: scc

Download patch

ref: efc299ce722e23e8732273a3244ffadae9df6407
parent: 384853dbfb1e264e360d552e96c225028e975fd7
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Sun Jan 22 06:30:15 EST 2017

[cc2-qbe] Add float types to size2asm/size2stack

--- a/cc2/arch/qbe/code.c
+++ b/cc2/arch/qbe/code.c
@@ -250,10 +250,8 @@
 {
 	if (tp->flags & STRF) {
 		return "b";
-	} else {
+	} else if (tp->flags & INTF) {
 		switch (tp->size) {
-		case 0:
-			return "";
 		case 1:
 			return "b";
 		case 2:
@@ -262,10 +260,14 @@
 			return "w";
 		case 8:
 			return "l";
-		default:
-			abort();
 		}
+	} else if (tp->flags & FLOATF) {
+		if (tp->size == 4)
+			return "s";
+		else if (tp->size == 8)
+			return "d";
 	}
+	abort();
 }
 
 void
@@ -306,20 +308,23 @@
 static char *
 size2stack(Type *tp)
 {
-	switch (tp->size) {
-	case 0:
-		return "w";
-	case 1:
-		return "w";
-	case 2:
-		return "w";
-	case 4:
-		return "w";
-	case 8:
-		return "l";
-	default:
-		abort();
+	if (tp->flags & INTF) {
+		switch (tp->size) {
+		case 0:
+		case 1:
+		case 2:
+		case 4:
+			return "w";
+		case 8:
+			return "l";
+		}
+	} else if (tp->flags & FLOATF) {
+		if (tp->size == 4)
+			return "s";
+		else if (tp->size == 8)
+			return "d";
 	}
+	abort();
 }
 
 void