commit 5bff7146fd6fe9b1c0611ad3365455b37c54cdf3
parent 6275cd6e0676eba4c80bc3293b4b8c28189eaa86
Author: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date: Fri, 26 Feb 2016 13:33:27 -0500
add cheapo static assert
Diffstat:
2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/lisc/isel.c b/lisc/isel.c
@@ -528,15 +528,15 @@ classify(Ins *i0, Ins *i1, AClass *ac, int op)
return ((6-nint) << 4) | ((8-nsse) << 8);
}
-int rsave[/* NRSave */] = {
+int rsave[] = {
RDI, RSI, RDX, RCX, R8, R9, R10, R11, RAX,
XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7,
XMM8, XMM9, XMM10, XMM11, XMM12, XMM13, XMM14
};
-typedef char make_sure_rsave_has_correct_size[
- sizeof rsave == NRSave * sizeof(int) ? 1 : -1
-];
-int rclob[NRClob] = {RBX, R12, R13, R14, R15};
+int rclob[] = {RBX, R12, R13, R14, R15};
+
+MAKESURE(rsave_has_correct_size, sizeof rsave == NRSave * sizeof(int));
+MAKESURE(rclob_has_correct_size, sizeof rclob == NRClob * sizeof(int));
ulong
calldef(Ins i, int p[2])
diff --git a/lisc/lisc.h b/lisc/lisc.h
@@ -5,6 +5,8 @@
#include <stdlib.h>
#include <string.h>
+#define MAKESURE(what, x) typedef char make_sure_##what[(x)?1:-1]
+
typedef unsigned int uint;
typedef unsigned short ushort;
typedef unsigned long ulong;
@@ -86,6 +88,8 @@ enum {
NBit = CHAR_BIT * sizeof(ulong),
};
+MAKESURE(NBit_is_enough, NBit >= (int)Tmp0);
+
struct BSet {
uint nt;
ulong *t;