summary refs log tree commit diff
path: root/abi.c
diff options
context:
space:
mode:
Diffstat (limited to 'abi.c')
-rw-r--r--abi.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/abi.c b/abi.c
new file mode 100644
index 0000000..9c83497
--- /dev/null
+++ b/abi.c
@@ -0,0 +1,25 @@
+#include "all.h"
+
+/* eliminate sub-word abi op
+ * variants for targets that
+ * treat char/short/... as
+ * words with arbitrary high
+ * bits
+ */
+void
+elimsb(Fn *fn)
+{
+	Blk *b;
+	Ins *i;
+
+	for (b=fn->start; b; b=b->link) {
+		for (i=b->ins; i<&b->ins[b->nins]; i++) {
+			if (isargbh(i->op))
+				i->op = Oarg;
+			if (isparbh(i->op))
+				i->op = Opar;
+		}
+		if (isretbh(b->jmp.type))
+			b->jmp.type = Jretw;
+	}
+}