ref: 89ce7731fc48c5e3d374ef3082da7958a0e4bc49
parent: 4e6fb511b31c7d113f56e968c952575cb0130df3
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Thu Mar 31 09:35:18 EDT 2022
cc2/qbe: Use unsigned char for asm codes asm codes can go over 127, and it means that depending in the ABI they can suffer sign extension that can generate problems.
--- a/src/cmd/cc/cc2/target/qbe/cgen.c
+++ b/src/cmd/cc/cc2/target/qbe/cgen.c
@@ -7,7 +7,7 @@
#include "arch.h"
#include "../../cc2.h"
-static char opasmw[][2] = {
+static unsigned char opasmw[][2] = {
[OADD] = {ASADDW, ASADDW},
[OSUB] = {ASSUBW, ASSUBW},
[OMUL] = {ASMULW, ASMULW},
@@ -26,7 +26,7 @@
[OBXOR] = {ASBXORW, ASBXORW},
};
-static char opasml[][2] = {
+static unsigned char opasml[][2] = {
[OADD] = {ASADDL, ASADDL},
[OSUB] = {ASSUBL, ASSUBL},
[OMUL] = {ASMULL, ASMULL},
@@ -45,7 +45,7 @@
[OBXOR] = {ASBXORL, ASBXORL},
};
-static char opasms[][2] = {
+static unsigned char opasms[][2] = {
[OADD] = {ASADDS, ASADDS},
[OSUB] = {ASSUBS, ASSUBS},
[OMUL] = {ASMULS, ASMULS},
@@ -58,7 +58,7 @@
[ONE] = {ASNES, ASNES},
};
-static char opasmd[][2] = {
+static unsigned char opasmd[][2] = {
[OADD] = {ASADDD, ASADDD},
[OSUB] = {ASSUBD, ASSUBD},
[OMUL] = {ASMULD, ASMULD},
@@ -71,7 +71,7 @@
[ONE] = {ASNED, ASNED},
};
-static char (*opbin[][2])[2] = {
+static unsigned char (*opbin[][2])[2] = {
{opasmw, opasml},
{opasms, opasmd},
};