shithub: scc

Download patch

ref: e01986d6087e1264c1865596d7fe02cadbec6296
parent: 7b7d12f633d61116de104d3920e0e24cdd7ad802
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Wed Dec 14 09:13:11 EST 2016

[cc1] Do not create types in CPPMODE

Strings in macros were generating types, and it created problems
in onlycpp mode, because these types were emitted even when
we were in onlycpp mode, mode supposed to don't print any
IR.

--- a/cc1/symbol.c
+++ b/cc1/symbol.c
@@ -219,12 +219,16 @@
 {
 	Symbol *sym = newsym(NS_IDEN);
 
-	sym->id = newid();
+	if (lexmode != CPPMODE) {
+		sym->type = mktype(chartype, ARY, len, NULL);
+		sym->id = newid();
+	}
+
 	sym->flags |= SSTRING | SCONSTANT | SPRIVATE;
 	sym->u.s = xmalloc(len);
 	if (s)
 		memcpy(sym->u.s, s, len);
-	sym->type = mktype(chartype, ARY, len, NULL);
+
 	return sym;
 }
 
--- a/cc1/tests/test001.c
+++ b/cc1/tests/test001.c
@@ -5,19 +5,17 @@
 description: Basic hello world test
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-X8	I	F	"printf
-G10	I	F	"main
+X4	I	F	"printf
+G6	I	F	"main
 {
 \
-V13	K	#ND
-Y12	V13	"	(
+V8	K	#ND
+Y9	V8	"	(
 	#"hello world
 	#K0A
 	#K00
 )
-	X8	Y12	'P	pP	cI
+	X4	Y9	'P	pP	cI
 	h	#I0
 }
 */
--- a/cc1/tests/test002.c
+++ b/cc1/tests/test002.c
@@ -5,29 +5,27 @@
 description: Test forward references before definition of types
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G8	P	"x
-S6	"S	#N8	#N2
-M9	I	"i	#N0
-M10	P	"next	#N2
-G12	I	F	"main
+G4	P	"x
+S2	"S	#N8	#N2
+M5	I	"i	#N0
+M6	P	"next	#N2
+G8	I	F	"main
 {
 \
-A13	S6	"y
-A14	P	"p
-A15	N	"n
-	A13	M9	.I	#I0	:I
-	G8	@S6	A13	:S6
-	A15	#N0	:N	A14	A13	'P	:P	,P
-	j	L18
+A9	S2	"y
+A10	P	"p
+A11	N	"n
+	A9	M5	.I	#I0	:I
+	G4	@S2	A9	:S2
+	A11	#N0	:N	A10	A9	'P	:P	,P
+	j	L14
 	e
-L16
-	A15	#N1	:+N	A14	A14	@S6	M10	.P	:P	,P
-L18
-	y	L16	A14	#P0	!I
+L12
+	A11	#N1	:+N	A10	A10	@S2	M6	.P	:P	,P
+L14
+	y	L12	A10	#P0	!I
 	b
-L17
+L13
 }
 */
 
--- a/cc1/tests/test003.c
+++ b/cc1/tests/test003.c
@@ -5,22 +5,20 @@
 description: Select function to call inside ternary operator
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"foo
+G2	I	F	"foo
 {
 \
 	h	#I2A
 }
-G7	I	F	"bar
+G3	I	F	"bar
 {
 \
 	h	#I18
 }
-G8	I	F	"main
+G4	I	F	"main
 {
 \
-	h	G6	cI
+	h	G2	cI
 }
 */
 
--- a/cc1/tests/test004.c
+++ b/cc1/tests/test004.c
@@ -5,30 +5,28 @@
 description: Test integer operations
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"x
-	A7	#I0	:I
-	A7	A7	#I2	+I	:I
-	A7	A7	#I1	-I	:I
-	A7	A7	#I6	*I	:I
-	A7	A7	#I2	/I	:I
-	A7	A7	#I2	%I	:I
-	A7	A7	#I2	lI	:I
-	A7	A7	#I1	rI	:I
-	A7	A7	#IFF	|I	:I
-	A7	A7	#I3	&I	:I
-	A7	A7	#I1	^I	:I
-	A7	A7	A7	#I1	>I	+I	:I
-	A7	A7	A7	#I3	<I	+I	:I
-	A7	A7	A7	#I1	>I	+I	:I
-	A7	A7	A7	#I4	<I	+I	:I
-	y	L8	A7	#I4	=I
+A3	I	"x
+	A3	#I0	:I
+	A3	A3	#I2	+I	:I
+	A3	A3	#I1	-I	:I
+	A3	A3	#I6	*I	:I
+	A3	A3	#I2	/I	:I
+	A3	A3	#I2	%I	:I
+	A3	A3	#I2	lI	:I
+	A3	A3	#I1	rI	:I
+	A3	A3	#IFF	|I	:I
+	A3	A3	#I3	&I	:I
+	A3	A3	#I1	^I	:I
+	A3	A3	A3	#I1	>I	+I	:I
+	A3	A3	A3	#I3	<I	+I	:I
+	A3	A3	A3	#I1	>I	+I	:I
+	A3	A3	A3	#I4	<I	+I	:I
+	y	L4	A3	#I4	=I
 	h	#I1
-L8
+L4
 	h	#I0
 }
 */
--- a/cc1/tests/test005.c
+++ b/cc1/tests/test005.c
@@ -5,20 +5,18 @@
 description: Test unary integer operations
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"x
-	A7	#I3	:I
-	A7	A7	#I0	=I	:I
-	A7	A7	#I0	=I	:I
-	A7	A7	~I	:I
-	A7	A7	_I	:I
-	y	L8	A7	#I2	=I
+A3	I	"x
+	A3	#I3	:I
+	A3	A3	#I0	=I	:I
+	A3	A3	#I0	=I	:I
+	A3	A3	~I	:I
+	A3	A3	_I	:I
+	y	L4	A3	#I2	=I
 	h	#I1
-L8
+L4
 	h	#I0
 }
 */
--- a/cc1/tests/test006.c
+++ b/cc1/tests/test006.c
@@ -8,32 +8,30 @@
 test006.c:7: warning: conditional expression is constant
 test006.c:10: warning: conditional expression is constant
 output:
-V2	K	#NC
-V4	K	#N9
-G5	K	"c
-G7	I	F	"main
+G1	K	"c
+G3	I	F	"main
 {
 \
-	y	L8	#I1
+	y	L4	#I1
 	h	#I1
-	j	L9
-L8
-	y	L10	#I1
-	j	L11
-L10
-	y	L12	#I0
-	y	L13	G5	gI	#I0	=I
+	j	L5
+L4
+	y	L6	#I1
+	j	L7
+L6
+	y	L8	#I0
+	y	L9	G1	gI	#I0	=I
 	h	#I1
-	j	L14
-L13
+	j	L10
+L9
 	h	#I0
-L14
-	j	L15
-L12
+L10
+	j	L11
+L8
 	h	#I1
-L15
 L11
-L9
+L7
+L5
 	h	#I1
 }
 */
--- a/cc1/tests/test007.c
+++ b/cc1/tests/test007.c
@@ -5,22 +5,20 @@
 description: basic while test
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"x
-	A7	#IA	:I
-	j	L10
+A3	I	"x
+	A3	#IA	:I
+	j	L6
 	e
-L8
-	A7	A7	#I1	-I	:I
-L10
-	y	L8	A7	#I0	!I
+L4
+	A3	A3	#I1	-I	:I
+L6
+	y	L4	A3	#I0	!I
 	b
-L9
-	h	A7
+L5
+	h	A3
 }
 */
 
--- a/cc1/tests/test008.c
+++ b/cc1/tests/test008.c
@@ -5,26 +5,24 @@
 description: Basic do while loop
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"x
-	A7	#I0	:I
+A3	I	"x
+	A3	#I0	:I
 	e
-L8
-	A7	A7	#I1	+I	:I
-	y	L8	A7	#IA	<I
+L4
+	A3	A3	#I1	+I	:I
+	y	L4	A3	#IA	<I
 	b
-L9
+L5
 	e
-L10
-	A7	A7	#I1	+I	:I
-	y	L10	A7	#I14	<I
+L6
+	A3	A3	#I1	+I	:I
+	y	L6	A3	#I14	<I
 	b
-L11
-	h	A7	#I14	-I
+L7
+	h	A3	#I14	-I
 }
 */
 
--- a/cc1/tests/test009.c
+++ b/cc1/tests/test009.c
@@ -5,24 +5,22 @@
 description: Basic test for loops
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"x
-	A7	#I0	:I
-	j	L10
+A3	I	"x
+	A3	#I0	:I
+	j	L6
 	e
-L8
-	A7	A7	#I1	+I	:I
-L10
-	y	L8	A7	#IA	<I
+L4
+	A3	A3	#I1	+I	:I
+L6
+	y	L4	A3	#IA	<I
 	b
-L9
-	y	L11	A7	#IA	=I
+L5
+	y	L7	A3	#IA	=I
 	h	#I1
-L11
+L7
 	h	#I0
 }
 */
--- a/cc1/tests/test010.c
+++ b/cc1/tests/test010.c
@@ -8,59 +8,57 @@
 test010.c:10: warning: conditional expression is constant
 test010.c:30: warning: conditional expression is constant
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"x
-	A7	#I0	:I
-	j	L10
+A3	I	"x
+	A3	#I0	:I
+	j	L6
 	e
-L8
+L4
+	j	L5
+L6
+	y	L4	#I1
+	b
+L5
 	j	L9
+	e
+L7
+	y	L10	A3	#I5	!I
+	j	L8
 L10
-	y	L8	#I1
-	b
+	A3	A3	#I1	+I	:I
+	j	L7
 L9
+	y	L7	#I1
+	b
+L8
+
 	j	L13
 	e
 L11
-	y	L14	A7	#I5	!I
+	y	L14	A3	#IA	!I
 	j	L12
 L14
-	A7	A7	#I1	+I	:I
+	A3	A3	#I1	+I	:I
 	j	L11
+
 L13
-	y	L11	#I1
+	j	L11
+
 	b
 L12
-
-	j	L17
 	e
 L15
-	y	L18	A7	#IA	!I
+	y	L17	A3	#IF	!I
 	j	L16
-L18
-	A7	A7	#I1	+I	:I
-	j	L15
-
 L17
+	A3	A3	#I1	+I	:I
 	j	L15
-
+	y	L15	#I1
 	b
 L16
-	e
-L19
-	y	L21	A7	#IF	!I
-	j	L20
-L21
-	A7	A7	#I1	+I	:I
-	j	L19
-	y	L19	#I1
-	b
-L20
-	h	A7	#IF	-I
+	h	A3	#IF	-I
 }
 */
 
--- a/cc1/tests/test011.c
+++ b/cc1/tests/test011.c
@@ -7,19 +7,17 @@
 test011.c:13: warning: 'foo' defined but not used
 test011.c:13: warning: 'start' defined but not used
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-L7
-	j	L8
+L3
+	j	L4
 	h	#I1
-L9
+L5
 	h	#I0
-L8
-L10
-	j	L9
+L4
+L6
+	j	L5
 	h	#I1
 }
 */
--- a/cc1/tests/test012.c
+++ b/cc1/tests/test012.c
@@ -6,60 +6,58 @@
 error:
 test012.c:38: warning: 'foo' defined but not used
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"x
-	A7	#I0	:I
-	s	A7
+A3	I	"x
+	A3	#I0	:I
+	s	A3
+	v	L5	#I0
+L5
+	t	L4
+L4
+	s	A3
+	v	L7	#I0
+L7
+	s	A3
 	v	L9	#I0
 L9
+	j	L10
+	f	L11
+L11
+	h	#I1
 	t	L8
 L8
-	s	A7
-	v	L11	#I0
-L11
-	s	A7
-	v	L13	#I0
+	t	L6
+L6
+	h	#I2
+L10
+	s	A3
+	v	L13	#I1
 L13
-	j	L14
-	f	L15
-L15
-	h	#I1
+	h	#I3
 	t	L12
 L12
-	t	L10
-L10
-	h	#I2
-L14
-	s	A7
-	v	L17	#I1
-L17
-	h	#I3
-	t	L16
+	s	A3
+	A3	#I2	:I
+L15
+	v	L16	#I1
 L16
-	s	A7
-	A7	#I2	:I
-L19
-	v	L20	#I1
-L20
 	h	#I4
-	t	L18
+	t	L14
+L14
+	s	A3
+	v	L18	#I0
 L18
-	s	A7
-	v	L22	#I0
-L22
-	h	A7
-	v	L23	#I1
-L23
+	h	A3
+	v	L19	#I1
+L19
 	h	#I1
-	f	L24
-L24
+	f	L20
+L20
 	h	#I1
-	t	L21
-L21
+	t	L17
+L17
 }
 */
 
--- a/cc1/tests/test013.c
+++ b/cc1/tests/test013.c
@@ -8,132 +8,130 @@
           short is equal to int, and unsigned short is equal to unsigned.
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G5	I	"a
-G6	N	"b
-G7	K	"c
-G8	C	"d
-G9	K	"e
-G10	W	"f
-G11	Z	"g
-G12	Q	"h
-G13	O	"i
-G14	I	"j
-G15	N	"k
-G17	I	F	"main
+G1	I	"a
+G2	N	"b
+G3	K	"c
+G4	C	"d
+G5	K	"e
+G6	W	"f
+G7	Z	"g
+G8	Q	"h
+G9	O	"i
+G10	I	"j
+G11	N	"k
+G13	I	F	"main
 {
 \
-	G5	G6	gI	:I
-	G5	G7	gI	:I
-	G5	G8	gI	:I
-	G5	G9	gI	:I
-	G5	G10	gI	:I
-	G5	G11	gI	:I
-	G5	G12	gI	:I
-	G5	G13	gI	:I
-	G5	G14	:I
-	G5	G15	gI	:I
-	G6	G5	gN	:N
-	G6	G7	gN	:N
-	G6	G8	gN	:N
-	G6	G9	gN	:N
-	G6	G10	gN	:N
-	G6	G11	gN	:N
-	G6	G12	gN	:N
-	G6	G13	gN	:N
-	G6	G14	gN	:N
-	G6	G15	:N
-	G7	G5	gK	:K
-	G7	G6	gK	:K
-	G7	G8	gK	:K
-	G7	G9	:K
-	G7	G10	gK	:K
-	G7	G11	gK	:K
-	G7	G12	gK	:K
-	G7	G13	gK	:K
-	G7	G14	gK	:K
-	G7	G15	gK	:K
-	G8	G5	gC	:C
-	G8	G6	gC	:C
-	G8	G7	gC	:C
-	G8	G9	gC	:C
-	G8	G10	gC	:C
-	G8	G11	gC	:C
-	G8	G12	gC	:C
-	G8	G13	gC	:C
-	G8	G14	gC	:C
-	G8	G15	gC	:C
-	G9	G5	gK	:K
-	G9	G6	gK	:K
-	G9	G7	:K
-	G9	G8	gK	:K
-	G9	G10	gK	:K
-	G9	G11	gK	:K
-	G9	G12	gK	:K
-	G9	G13	gK	:K
-	G9	G14	gK	:K
-	G9	G15	gK	:K
-	G10	G5	gW	:W
-	G10	G6	gW	:W
-	G10	G7	gW	:W
-	G10	G8	gW	:W
-	G10	G9	gW	:W
-	G10	G11	gW	:W
-	G10	G12	gW	:W
-	G10	G13	gW	:W
-	G10	G14	gW	:W
-	G10	G15	gW	:W
-	G11	G5	gZ	:Z
-	G11	G6	gZ	:Z
-	G11	G7	gZ	:Z
-	G11	G8	gZ	:Z
-	G11	G9	gZ	:Z
-	G11	G10	gZ	:Z
-	G11	G12	gZ	:Z
-	G11	G13	gZ	:Z
-	G11	G14	gZ	:Z
-	G11	G15	gZ	:Z
-	G12	G5	gQ	:Q
-	G12	G6	gQ	:Q
-	G12	G7	gQ	:Q
-	G12	G8	gQ	:Q
-	G12	G9	gQ	:Q
-	G12	G10	gQ	:Q
-	G12	G11	gQ	:Q
-	G12	G13	gQ	:Q
-	G12	G14	gQ	:Q
-	G12	G15	gQ	:Q
-	G13	G5	gO	:O
-	G13	G6	gO	:O
-	G13	G7	gO	:O
-	G13	G8	gO	:O
-	G13	G9	gO	:O
-	G13	G10	gO	:O
-	G13	G11	gO	:O
-	G13	G12	gO	:O
-	G13	G14	gO	:O
-	G13	G15	gO	:O
-	G14	G5	:I
-	G14	G6	gI	:I
-	G14	G7	gI	:I
-	G14	G8	gI	:I
-	G14	G9	gI	:I
-	G14	G10	gI	:I
-	G14	G11	gI	:I
-	G14	G12	gI	:I
-	G14	G13	gI	:I
-	G14	G15	gI	:I
-	G15	G5	gN	:N
-	G15	G6	:N
-	G15	G7	gN	:N
-	G15	G8	gN	:N
-	G15	G9	gN	:N
-	G15	G10	gN	:N
-	G15	G11	gN	:N
-	G15	G12	gN	:N
-	G15	G14	gN	:N
-	G15	G13	gN	:N
+	G1	G2	gI	:I
+	G1	G3	gI	:I
+	G1	G4	gI	:I
+	G1	G5	gI	:I
+	G1	G6	gI	:I
+	G1	G7	gI	:I
+	G1	G8	gI	:I
+	G1	G9	gI	:I
+	G1	G10	:I
+	G1	G11	gI	:I
+	G2	G1	gN	:N
+	G2	G3	gN	:N
+	G2	G4	gN	:N
+	G2	G5	gN	:N
+	G2	G6	gN	:N
+	G2	G7	gN	:N
+	G2	G8	gN	:N
+	G2	G9	gN	:N
+	G2	G10	gN	:N
+	G2	G11	:N
+	G3	G1	gK	:K
+	G3	G2	gK	:K
+	G3	G4	gK	:K
+	G3	G5	:K
+	G3	G6	gK	:K
+	G3	G7	gK	:K
+	G3	G8	gK	:K
+	G3	G9	gK	:K
+	G3	G10	gK	:K
+	G3	G11	gK	:K
+	G4	G1	gC	:C
+	G4	G2	gC	:C
+	G4	G3	gC	:C
+	G4	G5	gC	:C
+	G4	G6	gC	:C
+	G4	G7	gC	:C
+	G4	G8	gC	:C
+	G4	G9	gC	:C
+	G4	G10	gC	:C
+	G4	G11	gC	:C
+	G5	G1	gK	:K
+	G5	G2	gK	:K
+	G5	G3	:K
+	G5	G4	gK	:K
+	G5	G6	gK	:K
+	G5	G7	gK	:K
+	G5	G8	gK	:K
+	G5	G9	gK	:K
+	G5	G10	gK	:K
+	G5	G11	gK	:K
+	G6	G1	gW	:W
+	G6	G2	gW	:W
+	G6	G3	gW	:W
+	G6	G4	gW	:W
+	G6	G5	gW	:W
+	G6	G7	gW	:W
+	G6	G8	gW	:W
+	G6	G9	gW	:W
+	G6	G10	gW	:W
+	G6	G11	gW	:W
+	G7	G1	gZ	:Z
+	G7	G2	gZ	:Z
+	G7	G3	gZ	:Z
+	G7	G4	gZ	:Z
+	G7	G5	gZ	:Z
+	G7	G6	gZ	:Z
+	G7	G8	gZ	:Z
+	G7	G9	gZ	:Z
+	G7	G10	gZ	:Z
+	G7	G11	gZ	:Z
+	G8	G1	gQ	:Q
+	G8	G2	gQ	:Q
+	G8	G3	gQ	:Q
+	G8	G4	gQ	:Q
+	G8	G5	gQ	:Q
+	G8	G6	gQ	:Q
+	G8	G7	gQ	:Q
+	G8	G9	gQ	:Q
+	G8	G10	gQ	:Q
+	G8	G11	gQ	:Q
+	G9	G1	gO	:O
+	G9	G2	gO	:O
+	G9	G3	gO	:O
+	G9	G4	gO	:O
+	G9	G5	gO	:O
+	G9	G6	gO	:O
+	G9	G7	gO	:O
+	G9	G8	gO	:O
+	G9	G10	gO	:O
+	G9	G11	gO	:O
+	G10	G1	:I
+	G10	G2	gI	:I
+	G10	G3	gI	:I
+	G10	G4	gI	:I
+	G10	G5	gI	:I
+	G10	G6	gI	:I
+	G10	G7	gI	:I
+	G10	G8	gI	:I
+	G10	G9	gI	:I
+	G10	G11	gI	:I
+	G11	G1	gN	:N
+	G11	G2	:N
+	G11	G3	gN	:N
+	G11	G4	gN	:N
+	G11	G5	gN	:N
+	G11	G6	gN	:N
+	G11	G7	gN	:N
+	G11	G8	gN	:N
+	G11	G10	gN	:N
+	G11	G9	gN	:N
 }
 */
 
--- a/cc1/tests/test014.c
+++ b/cc1/tests/test014.c
@@ -20,30 +20,28 @@
 test014.c:34: warning: 'par' defined but not used
 test014.c:37: error: conflicting types for 'd'
 output:
-V2	K	#NC
-V4	K	#N9
-G5	I	"a
-Y6	K	"b
-X7	I	"c
-G10	I	F	"func1
+G1	I	"a
+Y2	K	"b
+X3	I	"c
+G6	I	F	"func1
 {
 \
-A11	I	"h
-T12	K	"i
-R13	W	"j
-X14	I	"k
-T15	Z	"a
+A7	I	"h
+T8	K	"i
+R9	W	"j
+X10	I	"k
+T11	Z	"a
 	h	#I0
 }
-G18	0	F	"func2
+G14	0	F	"func2
 {
-R16	I	"par
+R12	I	"par
 \
-A19	I	"par
+A15	I	"par
 }
-T21	0	F	"func3
+T17	0	F	"func3
 {
-R20	I	"par
+R16	I	"par
 \
 }
 */
--- a/cc1/tests/test015.c
+++ b/cc1/tests/test015.c
@@ -4,27 +4,25 @@
 name: TEST015
 description: Stress namespace mechanism
 error:
-test015.c:56: error: label 's' already defined
+test015.c:54: error: label 's' already defined
 output:
-V2	K	#NC
-V4	K	#N9
-S12	"s2	#N2	#N1
-M13	I	"s	#N0
-S9	"s1	#N4	#N1
-M10	I	"s	#N0
-M14	S12	"s1	#N2
-S6	"s	#N4	#N1
-M15	S9	"s	#N0
-G16	S6	"s2
-G18	I	F	"main
+S8	"s2	#N2	#N1
+M9	I	"s	#N0
+S5	"s1	#N4	#N1
+M6	I	"s	#N0
+M10	S8	"s1	#N2
+S2	"s	#N4	#N1
+M11	S5	"s	#N0
+G12	S2	"s2
+G14	I	F	"main
 {
 \
-	j	L19
-A20	S6	"s
-A21	I	"s
-	h	A21
-	h	A20	M15	.S9	M10	.I	A20	M15	.S9	M14	.S12	M13	.I	+I
-L19
+	j	L15
+A16	S2	"s
+A17	I	"s
+	h	A17
+	h	A16	M11	.S5	M6	.I	A16	M11	.S5	M10	.S8	M9	.I	+I
+L15
 */
 
 typedef struct s s;
--- a/cc1/tests/test016.c
+++ b/cc1/tests/test016.c
@@ -7,42 +7,40 @@
 test016.c:42: error: redefinition of 'func2'
 test016.c:46: error: incompatible types when assigning
 output:
-V2	K	#NC
-V4	K	#N9
-G5	I	"g
-G7	I	F	"func1
+G1	I	"g
+G3	I	F	"func1
 {
 \
-A8	I	"x
-A10	P	"p
-	G5	#I1	:I
-	A8	#I1	:I
-	A10	A8	'P	:P
-	A10	@I	#I0	:I
-	y	L11	A8	#I0	=I
+A4	I	"x
+A6	P	"p
+	G1	#I1	:I
+	A4	#I1	:I
+	A6	A4	'P	:P
+	A6	@I	#I0	:I
+	y	L7	A4	#I0	=I
 	h	#I1
-L11
-	A10	G5	'P	:P
-	A10	@I	#I0	:I
-	y	L12	A10	#P0	!I
+L7
+	A6	G1	'P	:P
+	A6	@I	#I0	:I
+	y	L8	A6	#P0	!I
 	h	#I1
-L12
+L8
 	h	#I0
 }
-G13	I	F	"func2
+G9	I	F	"func2
 {
 \
-A14	I	"x
-A16	P	"p
-A18	P	"pp
-	A14	#I1	:I
-	A16	A14	'P	:P
-	A18	A16	'P	:P
-	y	L19	A16	#P0	=I
-	A18	@P	@I	#I0	:I
-L19
-	A16	#P0	:P
-	h	A14
+A10	I	"x
+A12	P	"p
+A14	P	"pp
+	A10	#I1	:I
+	A12	A10	'P	:P
+	A14	A12	'P	:P
+	y	L15	A12	#P0	=I
+	A14	@P	@I	#I0	:I
+L15
+	A12	#P0	:P
+	h	A10
 }
 */
 
--- a/cc1/tests/test017.c
+++ b/cc1/tests/test017.c
@@ -5,27 +5,25 @@
 description: Basic test about pointers and structs
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-S6	"s1	#N4	#N1
-M7	I	"y	#N0
-M8	I	"z	#N2
-S10	"s2	#N4	#N2
-M12	P	"p	#N0
-G14	I	F	"main
+S2	"s1	#N4	#N1
+M3	I	"y	#N0
+M4	I	"z	#N2
+S6	"s2	#N4	#N2
+M8	P	"p	#N0
+G10	I	F	"main
 {
 \
-A15	S6	"nested
-A16	S10	"v
-	A16	M12	.P	A15	'P	:P
-	A16	M12	.P	@S6	M7	.I	#I1	:I
-	A16	M12	.P	@S6	M8	.I	#I2	:I
-	y	L17	A15	M7	.I	#I1	=I
+A11	S2	"nested
+A12	S6	"v
+	A12	M8	.P	A11	'P	:P
+	A12	M8	.P	@S2	M3	.I	#I1	:I
+	A12	M8	.P	@S2	M4	.I	#I2	:I
+	y	L13	A11	M3	.I	#I1	=I
 	h	#I1
-L17
-	y	L18	A15	M8	.I	#I2	=I
+L13
+	y	L14	A11	M4	.I	#I2	=I
 	h	#I2
-L18
+L14
 	h	#I0
 }
 */
--- a/cc1/tests/test018.c
+++ b/cc1/tests/test018.c
@@ -5,34 +5,32 @@
 description: Basic test for arrays
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-V7	K	#N4
-V8	V7	#N2
-A9	V8	"arr
-A11	P	"p
-A13	P	"q
-V14	I	#N4
-A15	V14	"v
-	A11	A9	'P	:P
-	A13	A9	'P	#P4	+P	#P3	+P	:P
-	A9	'P	#P4	+P	#P3	+P	@K	#K2	:K
-	A15	#I2	:I
-	y	L17	A9	'P	#P4	+P	#P3	+P	@K	gI	#I2	=I
+V3	K	#N4
+V4	V3	#N2
+A5	V4	"arr
+A7	P	"p
+A9	P	"q
+V10	I	#N4
+A11	V10	"v
+	A7	A5	'P	:P
+	A9	A5	'P	#P4	+P	#P3	+P	:P
+	A5	'P	#P4	+P	#P3	+P	@K	#K2	:K
+	A11	#I2	:I
+	y	L13	A5	'P	#P4	+P	#P3	+P	@K	gI	#I2	=I
 	h	#I1
-L17
-	y	L18	A11	#P4	+P	#P3	+P	@K	gI	#I2	=I
+L13
+	y	L14	A7	#P4	+P	#P3	+P	@K	gI	#I2	=I
 	h	#I1
-L18
-	y	L19	A13	@K	gI	#I2	=I
+L14
+	y	L15	A9	@K	gI	#I2	=I
 	h	#I1
-L19
-	y	L20	A15	#I2	=I
+L15
+	y	L16	A11	#I2	=I
 	h	#I1
-L20
+L16
 	h	#I0
 }
 */
--- a/cc1/tests/test019.c
+++ b/cc1/tests/test019.c
@@ -7,31 +7,29 @@
 test019.c:12: warning: division by 0
 test019.c:13: warning: division by 0
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"i
-	A7	#I3	:I
-	A7	#I1	:I
-	A7	#I12	:I
-	A7	#I2	:I
-	A7	#I0	:I
-	A7	A7	#I0	%I	:I
-	A7	A7	#I0	%I	:I
-	A7	#I8	:I
-	A7	#I2	:I
-	A7	#I4	:I
-	A7	#IC	:I
-	A7	#I8	:I
-	A7	#IFFFD	:I
-	A7	#IFFF3	:I
-	A7	#I1	:I
-	A7	#I0	:I
-	A7	#I0	:I
-	A7	#I1	:I
-	A7	#I0	:I
+A3	I	"i
+	A3	#I3	:I
+	A3	#I1	:I
+	A3	#I12	:I
+	A3	#I2	:I
+	A3	#I0	:I
+	A3	A3	#I0	%I	:I
+	A3	A3	#I0	%I	:I
+	A3	#I8	:I
+	A3	#I2	:I
+	A3	#I4	:I
+	A3	#IC	:I
+	A3	#I8	:I
+	A3	#IFFFD	:I
+	A3	#IFFF3	:I
+	A3	#I1	:I
+	A3	#I0	:I
+	A3	#I0	:I
+	A3	#I1	:I
+	A3	#I0	:I
 }
 */
 
--- a/cc1/tests/test020.c
+++ b/cc1/tests/test020.c
@@ -4,46 +4,44 @@
 name: TEST020
 description: Basic test for integer algebraic identities
 error:
-test020.c:84: warning: division by 0
-test020.c:85: warning: division by 0
+test020.c:82: warning: division by 0
+test020.c:83: warning: division by 0
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"i
-	A7	A7	#I0	!I	:I
-	A7	A7	#I0	!I	#I1	,I	:I
-	A7	#I1	:I
-	A7	A7	#I0	!I	:I
-	A7	A7	#I0	!I	#I0	,I	:I
-	A7	A7	#I0	!I	:I
-	A7	A7	#I0	!I	:I
-	A7	#I0	:I
-	A7	A7	:I
-	A7	#I0	:I
-	A7	A7	:I
-	A7	#I0	:I
-	A7	A7	:I
-	A7	A7	:I
-	A7	A7	:I
-	A7	#I0	A7	-I	:I
-	A7	A7	:I
-	A7	A7	:I
-	A7	A7	:I
-	A7	A7	:I
-	A7	A7	#I0	,I	:I
-	A7	A7	#I0	,I	:I
-	A7	A7	:I
-	A7	A7	:I
-	A7	A7	:I
-	A7	#I1	A7	/I	:I
-	A7	A7	:I
-	A7	A7	:I
-	A7	A7	#I1	,I	:I
-	A7	A7	#I0	/I	:I
-	A7	A7	#I0	%I	:I
+A3	I	"i
+	A3	A3	#I0	!I	:I
+	A3	A3	#I0	!I	#I1	,I	:I
+	A3	#I1	:I
+	A3	A3	#I0	!I	:I
+	A3	A3	#I0	!I	#I0	,I	:I
+	A3	A3	#I0	!I	:I
+	A3	A3	#I0	!I	:I
+	A3	#I0	:I
+	A3	A3	:I
+	A3	#I0	:I
+	A3	A3	:I
+	A3	#I0	:I
+	A3	A3	:I
+	A3	A3	:I
+	A3	A3	:I
+	A3	#I0	A3	-I	:I
+	A3	A3	:I
+	A3	A3	:I
+	A3	A3	:I
+	A3	A3	:I
+	A3	A3	#I0	,I	:I
+	A3	A3	#I0	,I	:I
+	A3	A3	:I
+	A3	A3	:I
+	A3	A3	:I
+	A3	#I1	A3	/I	:I
+	A3	A3	:I
+	A3	A3	:I
+	A3	A3	#I1	,I	:I
+	A3	A3	#I0	/I	:I
+	A3	A3	#I0	%I	:I
 }
 */
 
--- a/cc1/tests/test021.c
+++ b/cc1/tests/test021.c
@@ -6,23 +6,21 @@
 comments: This test is done for z80 implementation
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	K	"uc
-A8	C	"sc
-	A7	#KFF	:K
-	A7	#K23	:K
-	A7	#K1	:K
-	A7	#K1	:K
-	A7	#K41	:K
-	A8	#CFF	:C
-	A8	#C23	:C
-	A8	#C1	:C
-	A8	#C1	:C
-	A8	#C41	:C
+A3	K	"uc
+A4	C	"sc
+	A3	#KFF	:K
+	A3	#K23	:K
+	A3	#K1	:K
+	A3	#K1	:K
+	A3	#K41	:K
+	A4	#CFF	:C
+	A4	#C23	:C
+	A4	#C1	:C
+	A4	#C1	:C
+	A4	#C41	:C
 }
 */
 
--- a/cc1/tests/test022.c
+++ b/cc1/tests/test022.c
@@ -6,29 +6,27 @@
 comments: This test is done for z80 data types
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"i
-A8	N	"u
-	A7	#I1	:I
-	A7	#IFFFF	:I
-	A7	#IFFFF	:I
-	A7	#IFFFF	:I
-	A7	#IFFFF	:I
-	A7	#I3	:I
-	A7	#I1	:I
-	A7	#I0	:I
-	A8	#N1	:N
-	A8	#NFFFF	:N
-	A8	#NFFFF	:N
-	A8	#NFFFF	:N
-	A8	#NFFFF	:N
-	A8	#N0	:N
-	A8	#N3	:N
-	A8	#N0	:N
+A3	I	"i
+A4	N	"u
+	A3	#I1	:I
+	A3	#IFFFF	:I
+	A3	#IFFFF	:I
+	A3	#IFFFF	:I
+	A3	#IFFFF	:I
+	A3	#I3	:I
+	A3	#I1	:I
+	A3	#I0	:I
+	A4	#N1	:N
+	A4	#NFFFF	:N
+	A4	#NFFFF	:N
+	A4	#NFFFF	:N
+	A4	#NFFFF	:N
+	A4	#N0	:N
+	A4	#N3	:N
+	A4	#N0	:N
 	h	#I0
 }
 */
--- a/cc1/tests/test023.c
+++ b/cc1/tests/test023.c
@@ -6,29 +6,27 @@
 comments: This test is done for z80 data types
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	W	"i
-A8	Z	"u
-	A7	#W1	:W
-	A7	#WFFFFFFFF	:W
-	A7	#WFFFFFFFF	:W
-	A7	#WFFFF	:W
-	A7	#WFFFFFFFF	:W
-	A7	#W3	:W
-	A7	#W1	:W
-	A7	#W0	:W
-	A8	#Z1	:Z
-	A8	#ZFFFFFFFF	:Z
-	A8	#ZFFFFFFFF	:Z
-	A8	#ZFFFF	:Z
-	A8	#ZFFFFFFFF	:Z
-	A8	#Z3	:Z
-	A8	#Z1	:Z
-	A8	#Z0	:Z
+A3	W	"i
+A4	Z	"u
+	A3	#W1	:W
+	A3	#WFFFFFFFF	:W
+	A3	#WFFFFFFFF	:W
+	A3	#WFFFF	:W
+	A3	#WFFFFFFFF	:W
+	A3	#W3	:W
+	A3	#W1	:W
+	A3	#W0	:W
+	A4	#Z1	:Z
+	A4	#ZFFFFFFFF	:Z
+	A4	#ZFFFFFFFF	:Z
+	A4	#ZFFFF	:Z
+	A4	#ZFFFFFFFF	:Z
+	A4	#Z3	:Z
+	A4	#Z1	:Z
+	A4	#Z0	:Z
 	h	#I0
 }
 */
--- a/cc1/tests/test024.c
+++ b/cc1/tests/test024.c
@@ -6,27 +6,25 @@
 comments: This test is done for z80 data types
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	Q	"i
-A8	O	"u
-	A7	#Q1	:Q
-	A7	#QFFFFFFFFFFFFFFFF	:Q
-	A7	#QFFFFFFFFFFFFFFFF	:Q
-	A7	#QFFFF	:Q
-	A7	#QFFFFFFFFFFFFFFFF	:Q
-	A7	#Q3	:Q
-	A7	#Q1	:Q
-	A8	#O1	:O
-	A8	#OFFFFFFFFFFFFFFFF	:O
-	A8	#OFFFFFFFFFFFFFFFF	:O
-	A8	#OFFFF	:O
-	A8	#OFFFFFFFFFFFFFFFF	:O
-	A8	#O3	:O
-	A8	#O0	:O
+A3	Q	"i
+A4	O	"u
+	A3	#Q1	:Q
+	A3	#QFFFFFFFFFFFFFFFF	:Q
+	A3	#QFFFFFFFFFFFFFFFF	:Q
+	A3	#QFFFF	:Q
+	A3	#QFFFFFFFFFFFFFFFF	:Q
+	A3	#Q3	:Q
+	A3	#Q1	:Q
+	A4	#O1	:O
+	A4	#OFFFFFFFFFFFFFFFF	:O
+	A4	#OFFFFFFFFFFFFFFFF	:O
+	A4	#OFFFF	:O
+	A4	#OFFFFFFFFFFFFFFFF	:O
+	A4	#O3	:O
+	A4	#O0	:O
 	h	#I0
 }
 */
--- a/cc1/tests/test025.c
+++ b/cc1/tests/test025.c
@@ -5,18 +5,16 @@
 descritpion: Test of ifdef and ifndef
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G5	I	"a
-G6	I	"b
-G7	I	"c
-G8	I	"d
-G9	I	"_1
-G10	I	"_2
-G11	I	"e_
-G12	I	"f_
-G13	I	"h
-G14	I	"i
+G1	I	"a
+G2	I	"b
+G3	I	"c
+G4	I	"d
+G5	I	"_1
+G6	I	"_2
+G7	I	"e_
+G8	I	"f_
+G9	I	"h
+G10	I	"i
 */
 
 #define FOO
--- a/cc1/tests/test026.c
+++ b/cc1/tests/test026.c
@@ -5,24 +5,22 @@
 descritpion: Test of predefined cpp macros
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G7	I	F	"main
+G3	I	F	"main
 {
 \
-A8	I	"y
-A10	P	"p
-V12	K	#NA
-Y11	V12	"	(
+A4	I	"y
+A6	P	"p
+V7	K	#NA
+Y8	V7	"	(
 	#"test026.c
 	#K00
 )
-	A10	Y11	'P	:P
-	A8	#I26	:I
-	A8	#I1	:I
-	A8	#I1	:I
-	A8	#I1	:I
-	A8	#I1	:I
+	A6	Y8	'P	:P
+	A4	#I24	:I
+	A4	#I1	:I
+	A4	#I1	:I
+	A4	#I1	:I
+	A4	#I1	:I
 }
 */
 
--- a/cc1/tests/test027.c
+++ b/cc1/tests/test027.c
@@ -5,19 +5,17 @@
 description: Test of cpp stringizer
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G7	I	F	"main
+G3	I	F	"main
 {
 \
-A9	P	"p
-V11	K	#N19
-Y10	V11	"	(
+A5	P	"p
+V6	K	#N19
+Y7	V6	"	(
 	#"hello is better than bye
 	#K00
 )
-	A9	Y10	'P	:P
-	h	A9	@K	gI
+	A5	Y7	'P	:P
+	h	A5	@K	gI
 }
 */
 
--- a/cc1/tests/test028.c
+++ b/cc1/tests/test028.c
@@ -5,17 +5,15 @@
 description: Test of reinterpretation in define
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G10	P	F	"foo
+G6	P	F	"foo
 {
 \
-V12	K	#N3
-Y14	V12	"	(
+V7	K	#N3
+Y10	V7	"	(
 	#"hi
 	#K00
 )
-	h	Y14	'P
+	h	Y10	'P
 }
 */
 
--- a/cc1/tests/test029.c
+++ b/cc1/tests/test029.c
@@ -7,18 +7,16 @@
           moment f will not be expanded because the macro definition is
           a function alike macro, and in this case there is no arguments.
 error:
-test029.c:34: warning: expression without side effects
-test029.c:39: error: redefinition of 'f1'
-test029.c:40: error: 'f' undeclared
-test029.c:40: warning: expression without side effects
+test029.c:32: warning: expression without side effects
+test029.c:37: error: redefinition of 'f1'
+test029.c:38: error: 'f' undeclared
+test029.c:38: warning: expression without side effects
 output:
-V2	K	#NC
-V4	K	#N9
-G7	I	F	"f1
+G3	I	F	"f1
 {
 \
-A8	I	"f
-	A8	#I2	*I
+A4	I	"f
+	A4	#I2	*I
 }
 */
 
--- a/cc1/tests/test030.c
+++ b/cc1/tests/test030.c
@@ -5,32 +5,30 @@
 description: Basic test for vararg functions
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-S6	"foo	#N18	#N2
-M7	I	"i	#N0
-M8	I	"j	#N2
-M9	I	"k	#N4
-M11	P	"p	#N6
-M12	J	"v	#N8
-G18	I	F	"f1
+S2	"foo	#N18	#N2
+M3	I	"i	#N0
+M4	I	"j	#N2
+M5	I	"k	#N4
+M7	P	"p	#N6
+M8	J	"v	#N8
+G14	I	F	"f1
 {
-A13	S6	"f
-A15	P	"p
-A16	I	"n
+A9	S2	"f
+A11	P	"p
+A12	I	"n
 \
-	y	L19	A13	M7	.I	A15	@S6	M7	.I	=I
+	y	L15	A9	M3	.I	A11	@S2	M3	.I	=I
 	h	#I0
-L19
-	h	A15	@S6	M8	.I	A16	+I
+L15
+	h	A11	@S2	M4	.I	A12	+I
 }
-G21	I	F	"main
+G17	I	F	"main
 {
 \
-A22	S6	"f
-	A22	M7	.I	A22	M8	.I	#I1	:I	:I
-	G18	A22	pS6	A22	'P	pP	#I2	pI	cI
-	G18	A22	pS6	A22	'P	pP	#I2	pI	#I1	pI	A22	pS6	A22	'P	pP	cI
+A18	S2	"f
+	A18	M3	.I	A18	M4	.I	#I1	:I	:I
+	G14	A18	pS2	A18	'P	pP	#I2	pI	cI
+	G14	A18	pS2	A18	'P	pP	#I2	pI	#I1	pI	A18	pS2	A18	'P	pP	cI
 	h	#I0
 }
 */
--- a/cc1/tests/test032.c
+++ b/cc1/tests/test032.c
@@ -5,20 +5,17 @@
 description: test special characters @ and $ in macro definitions
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-V7	K	#N1E
-G9	I	F	"main
+G3	I	F	"main
 {
 \
-V13	K	#N2C
-Y12	V13	"	(
+V6	K	#N2C
+Y7	V6	"	(
 	#"This is a string $ or # or ##and it is ok !
 	#K00
 )
-A11	P	"p
-	A11	Y12	'P	:P
-	h	A11	#P0	!I
+A5	P	"p
+	A5	Y7	'P	:P
+	h	A5	#P0	!I
 }
 */
 
--- a/cc1/tests/test033.c
+++ b/cc1/tests/test033.c
@@ -5,9 +5,7 @@
 description: test for #if defined()
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G5	I	"c
+G1	I	"c
 */
 
 #if defined(FOO)
--- a/cc1/tests/test034.c
+++ b/cc1/tests/test034.c
@@ -4,28 +4,26 @@
 name: TEST034
 description: Basic test for incomplete structures
 error:
-test034.c:50: error: declared variable 'bar' of incomplete type
-test034.c:50: error: redeclaration of 'bar'
+test034.c:48: error: declared variable 'bar' of incomplete type
+test034.c:48: error: redeclaration of 'bar'
 output:
-V2	K	#NC
-V4	K	#N9
-X7	S6	"x
-X9	I	F	"foo
-G10	I	F	"main
+X3	S2	"x
+X5	I	F	"foo
+G6	I	F	"main
 {
 \
-X11	S6	"x
-	h	X11	'P	#P0	!I
+X7	S2	"x
+	h	X7	'P	#P0	!I
 }
-S6	"X	#N2	#N1
-M13	I	"v	#N0
-G9	I	F	"foo
+S2	"X	#N2	#N1
+M9	I	"v	#N0
+G5	I	F	"foo
 {
 \
-	X7	M13	.I	#I0	:I
-	h	X7	M13	.I
+	X3	M9	.I	#I0	:I
+	h	X3	M9	.I
 }
-X17	S15	"bar2
+X13	S11	"bar2
 */
 
 extern struct X x;
--- a/cc1/tests/test035.c
+++ b/cc1/tests/test035.c
@@ -5,8 +5,25 @@
 description: Basic test for enumerations
 error:
 output:
-V2	K	#NC
-V4	K	#N9
+G7	I	F	"main
+{
+\
+A8	I	"e
+	A8	#I3	:I
+	y	L9	A8	#I1	=I
+	h	#I0
+L9
+	y	L10	A8	#I0	=I
+	h	#I1
+L10
+	y	L11	A8	#I2	=I
+	h	#I2
+L11
+	y	L12	A8	#I3	=I
+	h	#I3
+L12
+	h	#I0
+}
 */
 
 enum E {
--- a/cc1/tests/test036.c
+++ b/cc1/tests/test036.c
@@ -4,50 +4,48 @@
 name: TEST036
 description: Duff's device
 error:
-test036.c:61: warning: type defaults to 'int' in declaration
+test036.c:59: warning: type defaults to 'int' in declaration
 output:
-V2	K	#NC
-V4	K	#N9
-G9	I	F	"send
+G5	I	F	"send
 {
-R5	P	"to
-R6	P	"from
-R7	I	"count
+R1	P	"to
+R2	P	"from
+R3	I	"count
 \
-R11	I	"n
-	R11	R7	#I7	+I	#I8	/I	:I
-	s	R7	#I8	%I
-	v	L13	#I0
-L13
+R7	I	"n
+	R7	R3	#I7	+I	#I8	/I	:I
+	s	R3	#I8	%I
+	v	L9	#I0
+L9
 	e
+L10
+	R1	@I	R2	#P2	:iP	@I	:I
+	v	L12	#I7
+L12
+	R1	@I	R2	#P2	:iP	@I	:I
+	v	L13	#I6
+L13
+	R1	@I	R2	#P2	:iP	@I	:I
+	v	L14	#I5
 L14
-	R5	@I	R6	#P2	:iP	@I	:I
-	v	L16	#I7
+	R1	@I	R2	#P2	:iP	@I	:I
+	v	L15	#I4
+L15
+	R1	@I	R2	#P2	:iP	@I	:I
+	v	L16	#I3
 L16
-	R5	@I	R6	#P2	:iP	@I	:I
-	v	L17	#I6
+	R1	@I	R2	#P2	:iP	@I	:I
+	v	L17	#I2
 L17
-	R5	@I	R6	#P2	:iP	@I	:I
-	v	L18	#I5
+	R1	@I	R2	#P2	:iP	@I	:I
+	v	L18	#I1
 L18
-	R5	@I	R6	#P2	:iP	@I	:I
-	v	L19	#I4
-L19
-	R5	@I	R6	#P2	:iP	@I	:I
-	v	L20	#I3
-L20
-	R5	@I	R6	#P2	:iP	@I	:I
-	v	L21	#I2
-L21
-	R5	@I	R6	#P2	:iP	@I	:I
-	v	L22	#I1
-L22
-	R5	@I	R6	#P2	:iP	@I	:I
-	y	L14	R11	#I1	:-I	#I0	>I
+	R1	@I	R2	#P2	:iP	@I	:I
+	y	L10	R7	#I1	:-I	#I0	>I
 	b
-L15
-	t	L12
-L12
+L11
+	t	L8
+L8
 }
 */
 
--- a/cc1/tests/test037.c
+++ b/cc1/tests/test037.c
@@ -5,24 +5,22 @@
 description: Basic sizeof test
 comments: This test is based in z80 sizes
 error:
+test037.c:30: warning: conditional expression is constant
 test037.c:32: warning: conditional expression is constant
 test037.c:34: warning: conditional expression is constant
-test037.c:36: warning: conditional expression is constant
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-	y	L7	#I1
+	y	L3	#I1
 	h	#I1
-L7
-	y	L8	#I1
+L3
+	y	L4	#I1
 	h	#I2
-L8
-	y	L9	#I1
+L4
+	y	L5	#I1
 	h	#I3
-L9
+L5
 	h	#I0
 }
 */
--- a/cc1/tests/test038.c
+++ b/cc1/tests/test038.c
@@ -4,25 +4,23 @@
 name: TEST038
 description: Basic test for tentative definitions
 error:
-test038.c:47: error: redeclaration of 'x'
+test038.c:45: error: redeclaration of 'x'
 output:
-V2	K	#NC
-V4	K	#N9
-G5	I	"x
-G5	I	"x	(
+G1	I	"x
+G1	I	"x	(
 	#I0
 )
-X7	I	F	"main
-G9	P	F	"foo
+X3	I	F	"main
+G5	P	F	"foo
 {
 \
-	h	X7	'P
+	h	X3	'P
 }
-G7	I	F	"main
+G3	I	F	"main
 {
 \
-	G5	#I0	:I
-	h	G5
+	G1	#I0	:I
+	h	G1
 }
 */
 
--- a/cc1/tests/test039.c
+++ b/cc1/tests/test039.c
@@ -6,30 +6,28 @@
 comments: This test is done for z80 sizes
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"i
-A8	N	"u
-A9	W	"l
-A10	Z	"ul
-A11	Q	"ll
-A12	O	"ull
-	A7	#I1	:I
-	A7	#I1	:I
-	A8	#N1	:N
-	A8	#N1	:N
-	A9	#W1	:W
-	A9	#W0	:W
-	A8	#N0	:N
-	A10	#Z1	:Z
-	A9	#W1	:W
-	A11	#Q0	:Q
-	A10	#Z0	:Z
-	A12	#O1	:O
-	A12	#O1	:O
+A3	I	"i
+A4	N	"u
+A5	W	"l
+A6	Z	"ul
+A7	Q	"ll
+A8	O	"ull
+	A3	#I1	:I
+	A3	#I1	:I
+	A4	#N1	:N
+	A4	#N1	:N
+	A5	#W1	:W
+	A5	#W0	:W
+	A4	#N0	:N
+	A6	#Z1	:Z
+	A5	#W1	:W
+	A7	#Q0	:Q
+	A6	#Z0	:Z
+	A8	#O1	:O
+	A8	#O1	:O
 	h	#I0
 }
 */
--- a/cc1/tests/test040.c
+++ b/cc1/tests/test040.c
@@ -5,17 +5,15 @@
 description: Test for bug parsing typenames in struct definition
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-S6	"List	#NC	#N2
-M8	I	"len	#N0
-M10	P	"head	#N2
-M11	P	"back	#N4
-G13	I	F	"main
+S2	"List	#NC	#N2
+M4	I	"len	#N0
+M6	P	"head	#N2
+M7	P	"back	#N4
+G9	I	F	"main
 {
 \
-A14	S6	"List
-	h	A14	M8	.I
+A10	S2	"List
+	h	A10	M4	.I
 }
 */
 
--- a/cc1/tests/test041.c
+++ b/cc1/tests/test041.c
@@ -4,34 +4,32 @@
 name: TEST041
 description: Test for bug parsing ternary operators
 error:
-test041.c:53: error: type mismatch in conditional expression
-test041.c:53: error: incompatible types when assigning
-test041.c:54: error: used struct/union type value where scalar is required
-test041.c:54: warning: expression without side effects
-test041.c:55: warning: 'i' defined but not used
-test041.c:55: warning: 'foo' defined but not used
-test041.c:55: warning: 's' defined but not used
+test041.c:51: error: type mismatch in conditional expression
+test041.c:51: error: incompatible types when assigning
+test041.c:52: error: used struct/union type value where scalar is required
+test041.c:52: warning: expression without side effects
+test041.c:53: warning: 'i' defined but not used
+test041.c:53: warning: 'foo' defined but not used
+test041.c:53: warning: 's' defined but not used
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-A7	I	"i
-A9	P	"q
-A11	P	"s
-A12	P	"p
-S14	"foo	#N2	#N1
-M15	I	"i	#N0
-A16	S14	"foo
-	A7	A7	#I0	!I	#W0	#W0	?W	gI	:I
-	A12	A7	#I0	!I	#P0	#P0	?P	:P
-	A12	A7	#I0	!I	#P0	#P0	?P	:P
-	A12	A7	#I0	!I	#P0	#P0	?P	:P
-	A9	A7	#I0	!I	#P0	A12	?P	:P
-	A9	A7	#I0	!I	A12	#P0	?P	:P
-	A9	A7	#I0	!I	A9	#P0	?P	:P
-	A9	A7	#I0	!I	#P0	A9	?P	:P
+A3	I	"i
+A5	P	"q
+A7	P	"s
+A8	P	"p
+S10	"foo	#N2	#N1
+M11	I	"i	#N0
+A12	S10	"foo
+	A3	A3	#I0	!I	#W0	#W0	?W	gI	:I
+	A8	A3	#I0	!I	#P0	#P0	?P	:P
+	A8	A3	#I0	!I	#P0	#P0	?P	:P
+	A8	A3	#I0	!I	#P0	#P0	?P	:P
+	A5	A3	#I0	!I	#P0	A8	?P	:P
+	A5	A3	#I0	!I	A8	#P0	?P	:P
+	A5	A3	#I0	!I	A5	#P0	?P	:P
+	A5	A3	#I0	!I	#P0	A5	?P	:P
 */
    
 int
--- a/cc1/tests/test042.c
+++ b/cc1/tests/test042.c
@@ -4,14 +4,12 @@
 name: TEST042
 description: Test for bug parsing ternary operators
 error:
-test042.c:22: error: bad type conversion requested
+test042.c:20: error: bad type conversion requested
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
-X8	0	F	"f
+X4	0	F	"f
 */
 
 int
--- a/cc1/tests/test043.c
+++ b/cc1/tests/test043.c
@@ -5,16 +5,14 @@
 description: Test for double typedef (taken from plan9 kernel)
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-S6	"Clock0link	#N8	#N2
-M10	P	"clock	#N0
-M12	P	"link	#N2
-G13	S6	"cl0
-G15	I	F	"main
+S2	"Clock0link	#N8	#N2
+M6	P	"clock	#N0
+M8	P	"link	#N2
+G9	S2	"cl0
+G11	I	F	"main
 {
 \
-	G13	M10	.P	@F	c0
+	G9	M6	.P	@F	c0
 	h	#I0
 }
 */
--- a/cc1/tests/test045.c
+++ b/cc1/tests/test045.c
@@ -5,17 +5,15 @@
 description: Basic test of initializers
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G5	I	"x	(
+G1	I	"x	(
 	#I5
 )
-G7	I	F	"main
+G3	I	F	"main
 {
 \
-	y	L8	G5	#I5	=I
+	y	L4	G1	#I5	=I
 	h	#I1
-L8
+L4
 	h	#I0
 }
 */
--- a/cc1/tests/test046.c
+++ b/cc1/tests/test046.c
@@ -5,26 +5,24 @@
 description: Basic test for initializators
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-V5	I	#N3
-G6	V5	"x	(
+V1	I	#N3
+G2	V1	"x	(
 	#I1
 	#I2
 	#I3
 )
-G8	I	F	"main
+G4	I	F	"main
 {
 \
-	y	L9	G6	#I1	=I
+	y	L5	G2	#I1	=I
 	h	#I1
-L9
-	y	L11	G6	'P	#P2	+P	@I	#I2	=I
+L5
+	y	L7	G2	'P	#P2	+P	@I	#I2	=I
 	h	#I2
-L11
-	y	L12	G6	'P	#P4	+P	@I	#I3	=I
+L7
+	y	L8	G2	'P	#P4	+P	@I	#I3	=I
 	h	#I3
-L12
+L8
 	h	#I0
 }
 */
--- a/cc1/tests/test047.c
+++ b/cc1/tests/test047.c
@@ -5,29 +5,27 @@
 description: Basic test for initializer
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-S6	"S	#N6	#N1
-M7	I	"a	#N0
-M8	I	"b	#N2
-M9	I	"c	#N4
-G10	S6	"x	(
+S2	"S	#N6	#N1
+M3	I	"a	#N0
+M4	I	"b	#N2
+M5	I	"c	#N4
+G6	S2	"x	(
 	#I1
 	#I2
 	#I3
 )
-G12	I	F	"main
+G8	I	F	"main
 {
 \
-	y	L13	G10	M7	.I	#I1	=I
+	y	L9	G6	M3	.I	#I1	=I
 	h	#I1
-L13
-	y	L14	G10	M8	.I	#I2	=I
+L9
+	y	L10	G6	M4	.I	#I2	=I
 	h	#I2
-L14
-	y	L15	G10	M9	.I	#I3	=I
+L10
+	y	L11	G6	M5	.I	#I3	=I
 	h	#I3
-L15
+L11
 	h	#I0
 }
 */
--- a/cc1/tests/test048.c
+++ b/cc1/tests/test048.c
@@ -5,25 +5,23 @@
 description: Basic test for initializer
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-S6	"S	#N4	#N1
-M7	I	"a	#N0
-M8	I	"b	#N2
-V9	S6	#N1
-G10	V9	"x	(
+S2	"S	#N4	#N1
+M3	I	"a	#N0
+M4	I	"b	#N2
+V5	S2	#N1
+G6	V5	"x	(
 	#I1
 	#I2
 )
-G12	I	F	"main
+G8	I	F	"main
 {
 \
-	y	L13	G10	M7	.I	#I1	=I
+	y	L9	G6	M3	.I	#I1	=I
 	h	#I1
-L13
-	y	L15	G10	M8	.I	#I2	=I
+L9
+	y	L11	G6	M4	.I	#I2	=I
 	h	#I2
-L15
+L11
 	h	#I0
 }
 */
--- a/cc1/tests/test049.c
+++ b/cc1/tests/test049.c
@@ -5,20 +5,18 @@
 description: Basic test for initializer
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G5	I	"x	(
+G1	I	"x	(
 	#I5
 )
-G7	P	"p	(
-	G5	'P
+G3	P	"p	(
+	G1	'P
 )
-G9	I	F	"main
+G5	I	F	"main
 {
 \
-	y	L10	G7	@I	#I5	=I
+	y	L6	G3	@I	#I5	=I
 	h	#I1
-L10
+L6
 	h	#I0
 }
 */
--- a/cc1/tests/test051.c
+++ b/cc1/tests/test051.c
@@ -5,26 +5,24 @@
 description: Basic test for initializer
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-V5	I	#N3
-G6	V5	"arr	(
+V1	I	#N3
+G2	V1	"arr	(
 	#I0
 	#I1
 	#I2
 )
-G8	I	F	"main
+G4	I	F	"main
 {
 \
-	y	L9	G6	#I0	=I
+	y	L5	G2	#I0	=I
 	h	#I1
-L9
-	y	L11	G6	'P	#P2	+P	@I	#I1	=I
+L5
+	y	L7	G2	'P	#P2	+P	@I	#I1	=I
 	h	#I2
-L11
-	y	L12	G6	'P	#P4	+P	@I	#I2	=I
+L7
+	y	L8	G2	'P	#P4	+P	@I	#I2	=I
 	h	#I3
-L12
+L8
 	h	#I0
 }
 */
--- a/cc1/tests/test052.c
+++ b/cc1/tests/test052.c
@@ -5,33 +5,31 @@
 description: Basic test for initializer
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-S6	"S	#N4	#N1
-M7	I	"a	#N0
-M8	I	"b	#N2
-V9	S6	#N2
-G10	V9	"arr	(
+S2	"S	#N4	#N1
+M3	I	"a	#N0
+M4	I	"b	#N2
+V5	S2	#N2
+G6	V5	"arr	(
 	#I1
 	#I2
 	#I3
 	#I4
 )
-G12	I	F	"main
+G8	I	F	"main
 {
 \
-	y	L13	G10	M7	.I	#I1	=I
+	y	L9	G6	M3	.I	#I1	=I
 	h	#I1
-L13
-	y	L15	G10	M8	.I	#I2	=I
+L9
+	y	L11	G6	M4	.I	#I2	=I
 	h	#I2
-L15
-	y	L16	G10	'P	#P4	+P	@S6	M7	.I	#I3	=I
+L11
+	y	L12	G6	'P	#P4	+P	@S2	M3	.I	#I3	=I
 	h	#I3
-L16
-	y	L17	G10	'P	#P4	+P	@S6	M8	.I	#I4	=I
+L12
+	y	L13	G6	'P	#P4	+P	@S2	M4	.I	#I4	=I
 	h	#I4
-L17
+L13
 	h	#I0
 }
 */
--- a/cc1/tests/test053.c
+++ b/cc1/tests/test053.c
@@ -5,24 +5,22 @@
 description: Basic test for initializer
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-S6	"S	#N4	#N1
-M7	I	"a	#N0
-M8	I	"b	#N2
-G9	S6	"s	(
+S2	"S	#N4	#N1
+M3	I	"a	#N0
+M4	I	"b	#N2
+G5	S2	"s	(
 	#I1
 	#I2
 )
-G11	I	F	"main
+G7	I	F	"main
 {
 \
-	y	L12	G9	M7	.I	#I1	=I
+	y	L8	G5	M3	.I	#I1	=I
 	h	#I1
-L12
-	y	L13	G9	M8	.I	#I2	=I
+L8
+	y	L9	G5	M4	.I	#I2	=I
 	h	#I2
-L13
+L9
 	h	#I0
 }
 */
--- a/cc1/tests/test056.c
+++ b/cc1/tests/test056.c
@@ -5,16 +5,14 @@
 desciption: Test of overlaying designators
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-V10	K	#N3
-S6	"S	#NB	#N1
-M7	I	"a	#N0
-M8	I	"b	#N2
-M9	I	"c	#N4
-M11	V10	"d	#N6
-M12	I	"e	#N9
-G13	S6	"s	(
+V6	K	#N3
+S2	"S	#NB	#N1
+M3	I	"a	#N0
+M4	I	"b	#N2
+M5	I	"c	#N4
+M7	V6	"d	#N6
+M8	I	"e	#N9
+G9	S2	"s	(
 	#I1
 	#I2
 	#I0
@@ -23,12 +21,12 @@
 	#K0
 	#I0
 )
-G15	V14	"m	(
+G11	V10	"m	(
 )
-G17	I	F	"main
+G13	I	F	"main
 {
 \
-	h	G13	M11	.V10	'P	#P2	+P	@K	gI	gN	#N0	=I
+	h	G9	M7	.V6	'P	#P2	+P	@K	gI	gN	#N0	=I
 }
 */
 
--- a/cc1/tests/test057.c
+++ b/cc1/tests/test057.c
@@ -5,10 +5,8 @@
 description: test of initialization of incomplete arrays
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-V5	I	#N3
-G7	V6	"arr1	(
+V1	I	#N3
+G3	V2	"arr1	(
 	#I2
 	#I7
 	#I5
@@ -16,7 +14,7 @@
 	#I1
 	#I2
 )
-G8	V6	"arr2	(
+G4	V2	"arr2	(
 	#I2
 	#I7
 	#I5
@@ -24,10 +22,10 @@
 	#I1
 	#I2
 )
-G10	I	F	"main
+G6	I	F	"main
 {
 \
-	h	G7	'P	#P6	+P	#P4	+P	@I	G8	'P	#P6	+P	#P6	+P	@I	!I
+	h	G3	'P	#P6	+P	#P4	+P	@I	G4	'P	#P6	+P	#P6	+P	@I	!I
 }
 */
 
--- a/cc1/tests/test058.c
+++ b/cc1/tests/test058.c
@@ -5,11 +5,9 @@
 description: Test of initialization mixing designators and sequence
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-V5	I	#N5
-V6	V5	#N3
-G8	V7	"arr	(
+V1	I	#N5
+V2	V1	#N3
+G4	V3	"arr	(
 	#I0
 	#I0
 	#I3
@@ -41,10 +39,10 @@
 	#I0
 	#I0
 )
-G10	I	F	"main
+G6	I	F	"main
 {
 \
-	h	G8	'P	#PA	+P	#P8	+P	@I	G8	'P	#P1E	+P	#PA	+P	#P8	+P	@I	!I
+	h	G4	'P	#PA	+P	#P8	+P	@I	G4	'P	#P1E	+P	#PA	+P	#P8	+P	@I	!I
 }
 */
 
--- a/cc1/tests/test060.c
+++ b/cc1/tests/test060.c
@@ -5,9 +5,7 @@
 description: Test for correctness of #line
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
 	h	#I0
--- a/cc1/tests/test061.c
+++ b/cc1/tests/test061.c
@@ -5,9 +5,7 @@
 description: Test for macros without arguments but with parenthesis
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G7	I	F	"main
+G3	I	F	"main
 {
 \
 	h	#I1
--- a/cc1/tests/test062.c
+++ b/cc1/tests/test062.c
@@ -5,9 +5,7 @@
 description: Test for hexadecimal numbers in upper and lower case
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-G6	I	F	"main
+G2	I	F	"main
 {
 \
 	h	#I1
--- a/cc1/tests/test064.c
+++ b/cc1/tests/test064.c
@@ -5,16 +5,14 @@
 description: Test function alike macro without parenthesis
 error:
 output:
-V2	K	#NC
-V4	K	#N9
-S5	"	#N2	#N1
-M6	I	"f	#N0
-G9	I	F	"main
+S1	"	#N2	#N1
+M2	I	"f	#N0
+G5	I	F	"main
 {
 \
-A10	S5	"s
-	A10	M6	.I	#I0	:I
-	h	A10	M6	.I
+A6	S1	"s
+	A6	M2	.I	#I0	:I
+	h	A6	M2	.I
 }
 */
 
--- a/cc1/tests/test065.c
+++ b/cc1/tests/test065.c
@@ -4,41 +4,39 @@
 name: TEST065
 description: Test decay mixed with * operators
 error:
-test065.c:67: error: increment of pointer to an incomplete type
-test065.c:67: error: invalid use of undefined type
-test065.c:68: warning: 'argv' defined but not used
+test065.c:65: error: increment of pointer to an incomplete type
+test065.c:65: error: invalid use of undefined type
+test065.c:66: warning: 'argv' defined but not used
 output:
-V2	K	#NC
-V4	K	#N9
-G11	I	F	"main
+G7	I	F	"main
 {
-A5	I	"argc
-A9	P	"argv
+A1	I	"argc
+A5	P	"argv
 \
-V12	I	#N1
-A13	V12	"v
-A16	P	"p
-A18	P	"f1
-A19	P	"f2
-	A13	#I0	:I
-	A16	A13	'P	:P
-	A18	G11	'P	:P
-	A19	G11	'P	:P
-	y	L22	A5	#I0	!I
+V8	I	#N1
+A9	V8	"v
+A12	P	"p
+A14	P	"f1
+A15	P	"f2
+	A9	#I0	:I
+	A12	A9	'P	:P
+	A14	G7	'P	:P
+	A15	G7	'P	:P
+	y	L18	A1	#I0	!I
 	h	#I1
-L22
-	y	L23	G11	#I0	pI	#P0	pP	cI	#I0	=I
+L18
+	y	L19	G7	#I0	pI	#P0	pP	cI	#I0	=I
 	h	#I2
-L23
-	y	L24	A18	@F	#I0	pI	#P0	pP	cI	#I0	=I
+L19
+	y	L20	A14	@F	#I0	pI	#P0	pP	cI	#I0	=I
 	h	#I3
-L24
-	y	L25	A19	@F	#I0	pI	#P0	pP	cI	#I0	=I
+L20
+	y	L21	A15	@F	#I0	pI	#P0	pP	cI	#I0	=I
 	h	#I4
-L25
-	y	L26	A16	@I	#I0	!I
+L21
+	y	L22	A12	@I	#I0	!I
 	h	#I0
-L26
+L22
 */
 
 int
--- a/cc1/tests/test066.c
+++ b/cc1/tests/test066.c
@@ -4,15 +4,13 @@
 name: TEST066
 description: Test cpp defined operator
 error:
-test066.c:55: error: operator 'defined' requires an identifier
-test066.c:55: error: expected ')' before '<EOF>'
+test066.c:53: error: operator 'defined' requires an identifier
+test066.c:53: error: expected ')' before '<EOF>'
 output:
-V2	K	#NC
-V4	K	#N9
-G5	I	"x	(
+G1	I	"x	(
 	#I0
 )
-G7	I	F	"main
+G3	I	F	"main
 {
 \
 	h	#I0