shithub: scc

Download patch

ref: 2401a9b700aa6dff9aa786f4d17a7dcd48e933b9
parent: 5c6838058bf80ec9c14b72e9817bc0b80c539f1d
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Mon Jan 25 05:35:33 EST 2016

[cc1] Move architecture dependant parts to arch/$ARCH/arch.c

Type array had size and aligment for all the types, and this
information cannot be portable ever.

--- a/cc1/Makefile
+++ b/cc1/Makefile
@@ -3,7 +3,7 @@
 include ../config.mk
 
 OBJS = types.o decl.o lex.o error.o symbol.o main.o expr.o \
-	code.o stmt.o cpp.o fold.o init.o
+	code.o stmt.o cpp.o fold.o init.o arch/$(ARCH)/arch.o
 
 all: cc1
 
--- /dev/null
+++ b/cc1/arch/amd64-sysv/arch.c
@@ -1,0 +1,230 @@
+
+#include <stdio.h>
+
+#include "arch.h"
+#include "../../../inc/cc.h"
+#include "../../cc1.h"
+
+/*
+ * Initializaion of type pointers were done with
+ * a C99 initilizator '... = &(Type) {...', but
+ * c compiler in Plan9 gives error with this
+ * syntax, so I have switched it to this ugly form
+ * I hope I will change it again in the future
+ */
+
+static Type types[] = {
+	{       /* 0 = voidtype */
+		.op = VOID,
+		.letter = L_VOID,
+		.printed = 1
+	},
+	{       /* 1 = pvoidtype */
+		.op = PTR,
+		.letter = L_POINTER,
+		.size = 2,
+		.align = 2,
+		.printed = 1,
+		.defined = 1,
+	},
+	{      /* 2 = booltype */
+		.op = INT,
+		.letter = L_BOOL,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_BOOL,
+		.printed = 1
+	},
+	{       /* 3 = schartype */
+		.op = INT,
+		.letter = L_SCHAR,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_SCHAR,
+		.printed = 1
+	},
+	{      /* 4 = uchartype */
+		.op = INT,
+		.letter = L_UCHAR,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_UCHAR,
+		.printed = 1
+	},
+	{      /* 5 = chartype */
+		.op = INT,
+		.letter = L_CHAR,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_CHAR,
+		.printed = 1
+	},
+	{       /* 6 = ushortype */
+		.op = INT,
+		.letter = L_USHORT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_USHORT,
+		.printed = 1
+	},
+	{       /* 7 = shortype */
+		.op = INT,
+		.letter = L_SHORT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_SHORT,
+		.printed = 1
+	},
+	{       /* 8 = uinttype */
+		.op = INT,
+		.letter = L_UINT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_UINT,
+		.printed = 1
+	},
+	{       /* 9 = inttype */
+		.op = INT,
+		.letter = L_INT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_INT,
+		.printed = 1
+	},
+	{      /* 10 = longtype */
+		.op = INT,
+		.letter = L_LONG,
+		.defined = 1,
+		.size = 4,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_LONG,
+		.printed = 1
+	},
+	{       /* 11 = ulongtype */
+		.op = INT,
+		.letter = L_ULONG,
+		.defined = 1,
+		.size = 4,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_ULONG,
+		.printed = 1
+	},
+	{	/* 12 = ullongtype */
+		.op = INT,
+		.letter = L_ULLONG,
+		.defined = 1,
+		.size = 8,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_ULLONG,
+		.printed = 1
+	},
+	{       /* 13 = llongtype */
+		.op = INT,
+		.letter = L_LLONG,
+		.defined = 1,
+		.size = 8,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_LLONG,
+		.printed = 1
+	},
+	{       /* 14 = floattype */
+		.op = FLOAT,
+		.letter = L_FLOAT,
+		.defined = 1,
+		.size = 4,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_FLOAT,
+		.printed = 1
+	},
+	{       /* 15 = doubletype */
+		.op = FLOAT,
+		.letter = L_DOUBLE,
+		.defined = 1,
+		.size = 8,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_DOUBLE,
+		.printed = 1
+	},
+	{       /* 16 = ldoubletype */
+		.op = FLOAT,
+		.letter = L_LDOUBLE,
+		.defined = 1,
+		.size = 16,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_LDOUBLE,
+		.printed = 1
+	},
+	{       /* 17 = sizettype */
+		.op = INT,
+		.letter = L_UINT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_UINT,
+		.printed = 1
+	},
+	{      /* 18 = ellipsis */
+		.op = ELLIPSIS,
+		.letter = L_ELLIPSIS,
+		.defined = 1,
+		.printed = 1
+	}
+};
+
+Type *voidtype = &types[0], *pvoidtype = &types[1],
+     *booltype = &types[2], *schartype = &types[3],
+     *uchartype = &types[4], *chartype = &types[5],
+     *ushortype = &types[6], *shortype = &types[7],
+     *uinttype = &types[8], *inttype = &types[9],
+     *longtype = &types[10], *ulongtype = &types[11],
+     *ullongtype = &types[12], *llongtype = &types[13],
+     *floattype = &types[14], *doubletype = &types[15],
+     *ldoubletype = &types[16], *sizettype = &types[17],
+     *ellipsistype = &types[18];
+
+static Symbol dummy0 = {.u.i = 0, .type = &types[9]},
+              dummy1 = {.u.i = 1, .type = &types[9]};
+Symbol *zero = &dummy0, *one = &dummy1;
--- /dev/null
+++ b/cc1/arch/i386-sysv/arch.c
@@ -1,0 +1,230 @@
+
+#include <stdio.h>
+
+#include "arch.h"
+#include "../../../inc/cc.h"
+#include "../../cc1.h"
+
+/*
+ * Initializaion of type pointers were done with
+ * a C99 initilizator '... = &(Type) {...', but
+ * c compiler in Plan9 gives error with this
+ * syntax, so I have switched it to this ugly form
+ * I hope I will change it again in the future
+ */
+
+static Type types[] = {
+	{       /* 0 = voidtype */
+		.op = VOID,
+		.letter = L_VOID,
+		.printed = 1
+	},
+	{       /* 1 = pvoidtype */
+		.op = PTR,
+		.letter = L_POINTER,
+		.size = 2,
+		.align = 2,
+		.printed = 1,
+		.defined = 1,
+	},
+	{      /* 2 = booltype */
+		.op = INT,
+		.letter = L_BOOL,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_BOOL,
+		.printed = 1
+	},
+	{       /* 3 = schartype */
+		.op = INT,
+		.letter = L_SCHAR,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_SCHAR,
+		.printed = 1
+	},
+	{      /* 4 = uchartype */
+		.op = INT,
+		.letter = L_UCHAR,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_UCHAR,
+		.printed = 1
+	},
+	{      /* 5 = chartype */
+		.op = INT,
+		.letter = L_CHAR,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_CHAR,
+		.printed = 1
+	},
+	{       /* 6 = ushortype */
+		.op = INT,
+		.letter = L_USHORT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_USHORT,
+		.printed = 1
+	},
+	{       /* 7 = shortype */
+		.op = INT,
+		.letter = L_SHORT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_SHORT,
+		.printed = 1
+	},
+	{       /* 8 = uinttype */
+		.op = INT,
+		.letter = L_UINT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_UINT,
+		.printed = 1
+	},
+	{       /* 9 = inttype */
+		.op = INT,
+		.letter = L_INT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_INT,
+		.printed = 1
+	},
+	{      /* 10 = longtype */
+		.op = INT,
+		.letter = L_LONG,
+		.defined = 1,
+		.size = 4,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_LONG,
+		.printed = 1
+	},
+	{       /* 11 = ulongtype */
+		.op = INT,
+		.letter = L_ULONG,
+		.defined = 1,
+		.size = 4,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_ULONG,
+		.printed = 1
+	},
+	{	/* 12 = ullongtype */
+		.op = INT,
+		.letter = L_ULLONG,
+		.defined = 1,
+		.size = 8,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_ULLONG,
+		.printed = 1
+	},
+	{       /* 13 = llongtype */
+		.op = INT,
+		.letter = L_LLONG,
+		.defined = 1,
+		.size = 8,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_LLONG,
+		.printed = 1
+	},
+	{       /* 14 = floattype */
+		.op = FLOAT,
+		.letter = L_FLOAT,
+		.defined = 1,
+		.size = 4,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_FLOAT,
+		.printed = 1
+	},
+	{       /* 15 = doubletype */
+		.op = FLOAT,
+		.letter = L_DOUBLE,
+		.defined = 1,
+		.size = 8,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_DOUBLE,
+		.printed = 1
+	},
+	{       /* 16 = ldoubletype */
+		.op = FLOAT,
+		.letter = L_LDOUBLE,
+		.defined = 1,
+		.size = 16,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_LDOUBLE,
+		.printed = 1
+	},
+	{       /* 17 = sizettype */
+		.op = INT,
+		.letter = L_UINT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_UINT,
+		.printed = 1
+	},
+	{      /* 18 = ellipsis */
+		.op = ELLIPSIS,
+		.letter = L_ELLIPSIS,
+		.defined = 1,
+		.printed = 1
+	}
+};
+
+Type *voidtype = &types[0], *pvoidtype = &types[1],
+     *booltype = &types[2], *schartype = &types[3],
+     *uchartype = &types[4], *chartype = &types[5],
+     *ushortype = &types[6], *shortype = &types[7],
+     *uinttype = &types[8], *inttype = &types[9],
+     *longtype = &types[10], *ulongtype = &types[11],
+     *ullongtype = &types[12], *llongtype = &types[13],
+     *floattype = &types[14], *doubletype = &types[15],
+     *ldoubletype = &types[16], *sizettype = &types[17],
+     *ellipsistype = &types[18];
+
+static Symbol dummy0 = {.u.i = 0, .type = &types[9]},
+              dummy1 = {.u.i = 1, .type = &types[9]};
+Symbol *zero = &dummy0, *one = &dummy1;
--- /dev/null
+++ b/cc1/arch/z80/arch.c
@@ -1,0 +1,230 @@
+
+#include <stdio.h>
+
+#include "arch.h"
+#include "../../../inc/cc.h"
+#include "../../cc1.h"
+
+/*
+ * Initializaion of type pointers were done with
+ * a C99 initilizator '... = &(Type) {...', but
+ * c compiler in Plan9 gives error with this
+ * syntax, so I have switched it to this ugly form
+ * I hope I will change it again in the future
+ */
+
+static Type types[] = {
+	{       /* 0 = voidtype */
+		.op = VOID,
+		.letter = L_VOID,
+		.printed = 1
+	},
+	{       /* 1 = pvoidtype */
+		.op = PTR,
+		.letter = L_POINTER,
+		.size = 2,
+		.align = 2,
+		.printed = 1,
+		.defined = 1,
+	},
+	{      /* 2 = booltype */
+		.op = INT,
+		.letter = L_BOOL,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_BOOL,
+		.printed = 1
+	},
+	{       /* 3 = schartype */
+		.op = INT,
+		.letter = L_SCHAR,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_SCHAR,
+		.printed = 1
+	},
+	{      /* 4 = uchartype */
+		.op = INT,
+		.letter = L_UCHAR,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_UCHAR,
+		.printed = 1
+	},
+	{      /* 5 = chartype */
+		.op = INT,
+		.letter = L_CHAR,
+		.defined = 1,
+		.size = 1,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_CHAR,
+		.printed = 1
+	},
+	{       /* 6 = ushortype */
+		.op = INT,
+		.letter = L_USHORT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_USHORT,
+		.printed = 1
+	},
+	{       /* 7 = shortype */
+		.op = INT,
+		.letter = L_SHORT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_SHORT,
+		.printed = 1
+	},
+	{       /* 8 = uinttype */
+		.op = INT,
+		.letter = L_UINT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_UINT,
+		.printed = 1
+	},
+	{       /* 9 = inttype */
+		.op = INT,
+		.letter = L_INT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_INT,
+		.printed = 1
+	},
+	{      /* 10 = longtype */
+		.op = INT,
+		.letter = L_LONG,
+		.defined = 1,
+		.size = 4,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_LONG,
+		.printed = 1
+	},
+	{       /* 11 = ulongtype */
+		.op = INT,
+		.letter = L_ULONG,
+		.defined = 1,
+		.size = 4,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_ULONG,
+		.printed = 1
+	},
+	{	/* 12 = ullongtype */
+		.op = INT,
+		.letter = L_ULLONG,
+		.defined = 1,
+		.size = 8,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_ULLONG,
+		.printed = 1
+	},
+	{       /* 13 = llongtype */
+		.op = INT,
+		.letter = L_LLONG,
+		.defined = 1,
+		.size = 8,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.sign = 1,
+		.n.rank = RANK_LLONG,
+		.printed = 1
+	},
+	{       /* 14 = floattype */
+		.op = FLOAT,
+		.letter = L_FLOAT,
+		.defined = 1,
+		.size = 4,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_FLOAT,
+		.printed = 1
+	},
+	{       /* 15 = doubletype */
+		.op = FLOAT,
+		.letter = L_DOUBLE,
+		.defined = 1,
+		.size = 8,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_DOUBLE,
+		.printed = 1
+	},
+	{       /* 16 = ldoubletype */
+		.op = FLOAT,
+		.letter = L_LDOUBLE,
+		.defined = 1,
+		.size = 16,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_LDOUBLE,
+		.printed = 1
+	},
+	{       /* 17 = sizettype */
+		.op = INT,
+		.letter = L_UINT,
+		.defined = 1,
+		.size = 2,
+		.integer = 1,
+		.arith = 1,
+		.align = 1,
+		.n.rank = RANK_UINT,
+		.printed = 1
+	},
+	{      /* 18 = ellipsis */
+		.op = ELLIPSIS,
+		.letter = L_ELLIPSIS,
+		.defined = 1,
+		.printed = 1
+	}
+};
+
+Type *voidtype = &types[0], *pvoidtype = &types[1],
+     *booltype = &types[2], *schartype = &types[3],
+     *uchartype = &types[4], *chartype = &types[5],
+     *ushortype = &types[6], *shortype = &types[7],
+     *uinttype = &types[8], *inttype = &types[9],
+     *longtype = &types[10], *ulongtype = &types[11],
+     *ullongtype = &types[12], *llongtype = &types[13],
+     *floattype = &types[14], *doubletype = &types[15],
+     *ldoubletype = &types[16], *sizettype = &types[17],
+     *ellipsistype = &types[18];
+
+static Symbol dummy0 = {.u.i = 0, .type = &types[9]},
+              dummy1 = {.u.i = 1, .type = &types[9]};
+Symbol *zero = &dummy0, *one = &dummy1;
--- a/cc1/types.c
+++ b/cc1/types.c
@@ -12,7 +12,7 @@
 
 #define NR_TYPE_HASH 16
 
-/*
+/* FIXME:
  * Compiler can generate warnings here if the ranges of TINT,
  * TUINT and TFLOAT are smaller than any of the constants in this
  * array. Ignore them if you know that the target types are correct
@@ -72,233 +72,6 @@
 		}
 	}
 };
-
-/*
- * Initializaion of type pointers were done with
- * a C99 initilizator '... = &(Type) {...', but
- * c compiler in Plan9 gives error with this
- * syntax, so I have switched it to this ugly form
- * I hope I will change it again in the future
- */
-/*
- * TODO: There are fields here that depends of the
- *       architecture
- */
-static Type types[] = {
-	{       /* 0 = voidtype */
-		.op = VOID,
-		.letter = L_VOID,
-		.printed = 1
-	},
-	{       /* 1 = pvoidtype */
-		.op = PTR,
-		.letter = L_POINTER,
-		.size = 2,
-		.align = 2,
-		.printed = 1,
-		.defined = 1,
-	},
-	{      /* 2 = booltype */
-		.op = INT,
-		.letter = L_BOOL,
-		.defined = 1,
-		.size = 1,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.n.rank = RANK_BOOL,
-		.printed = 1
-	},
-	{       /* 3 = schartype */
-		.op = INT,
-		.letter = L_SCHAR,
-		.defined = 1,
-		.size = 1,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.sign = 1,
-		.n.rank = RANK_SCHAR,
-		.printed = 1
-	},
-	{      /* 4 = uchartype */
-		.op = INT,
-		.letter = L_UCHAR,
-		.defined = 1,
-		.size = 1,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.n.rank = RANK_UCHAR,
-		.printed = 1
-	},
-	{      /* 5 = chartype */
-		.op = INT,
-		.letter = L_CHAR,
-		.defined = 1,
-		.size = 1,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.sign = 1,
-		.n.rank = RANK_CHAR,
-		.printed = 1
-	},
-	{       /* 6 = ushortype */
-		.op = INT,
-		.letter = L_USHORT,
-		.defined = 1,
-		.size = 2,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.n.rank = RANK_USHORT,
-		.printed = 1
-	},
-	{       /* 7 = shortype */
-		.op = INT,
-		.letter = L_SHORT,
-		.defined = 1,
-		.size = 2,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.sign = 1,
-		.n.rank = RANK_SHORT,
-		.printed = 1
-	},
-	{       /* 8 = uinttype */
-		.op = INT,
-		.letter = L_UINT,
-		.defined = 1,
-		.size = 2,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.n.rank = RANK_UINT,
-		.printed = 1
-	},
-	{       /* 9 = inttype */
-		.op = INT,
-		.letter = L_INT,
-		.defined = 1,
-		.size = 2,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.sign = 1,
-		.n.rank = RANK_INT,
-		.printed = 1
-	},
-	{      /* 10 = longtype */
-		.op = INT,
-		.letter = L_LONG,
-		.defined = 1,
-		.size = 4,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.sign = 1,
-		.n.rank = RANK_LONG,
-		.printed = 1
-	},
-	{       /* 11 = ulongtype */
-		.op = INT,
-		.letter = L_ULONG,
-		.defined = 1,
-		.size = 4,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.n.rank = RANK_ULONG,
-		.printed = 1
-	},
-	{	/* 12 = ullongtype */
-		.op = INT,
-		.letter = L_ULLONG,
-		.defined = 1,
-		.size = 8,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.n.rank = RANK_ULLONG,
-		.printed = 1
-	},
-	{       /* 13 = llongtype */
-		.op = INT,
-		.letter = L_LLONG,
-		.defined = 1,
-		.size = 8,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.sign = 1,
-		.n.rank = RANK_LLONG,
-		.printed = 1
-	},
-	{       /* 14 = floattype */
-		.op = FLOAT,
-		.letter = L_FLOAT,
-		.defined = 1,
-		.size = 4,
-		.arith = 1,
-		.align = 1,
-		.n.rank = RANK_FLOAT,
-		.printed = 1
-	},
-	{       /* 15 = doubletype */
-		.op = FLOAT,
-		.letter = L_DOUBLE,
-		.defined = 1,
-		.size = 8,
-		.arith = 1,
-		.align = 1,
-		.n.rank = RANK_DOUBLE,
-		.printed = 1
-	},
-	{       /* 16 = ldoubletype */
-		.op = FLOAT,
-		.letter = L_LDOUBLE,
-		.defined = 1,
-		.size = 16,
-		.arith = 1,
-		.align = 1,
-		.n.rank = RANK_LDOUBLE,
-		.printed = 1
-	},
-	{       /* 17 = sizettype */
-		.op = INT,
-		.letter = L_UINT,
-		.defined = 1,
-		.size = 2,
-		.integer = 1,
-		.arith = 1,
-		.align = 1,
-		.n.rank = RANK_UINT,
-		.printed = 1
-	},
-	{      /* 18 = ellipsis */
-		.op = ELLIPSIS,
-		.letter = L_ELLIPSIS,
-		.defined = 1,
-		.printed = 1
-	}
-};
-
-Type *voidtype = &types[0], *pvoidtype = &types[1],
-	*booltype = &types[2], *schartype = &types[3],
-	*uchartype = &types[4], *chartype = &types[5],
-	*ushortype = &types[6], *shortype = &types[7],
-	*uinttype = &types[8], *inttype = &types[9],
-	*longtype = &types[10], *ulongtype = &types[11],
-	*ullongtype = &types[12], *llongtype = &types[13],
-	*floattype = &types[14], *doubletype = &types[15],
-	*ldoubletype = &types[16], *sizettype = &types[17],
-	*ellipsistype = &types[18];
-
-static Symbol dummy0 = {.u.i = 0, .type = &types[9]},
-              dummy1 = {.u.i = 1, .type = &types[9]};
-Symbol *zero = &dummy0, *one = &dummy1;
 
 struct limits *
 getlimits(Type *tp)