shithub: scc

Download patch

ref: dfaab330047216d4902aa71dea50c28728698da4
parent: f693fc0846b9cd1727a65994793c460bc0387e8f
author: Roberto E. Vargas Caballero <[email protected]>
date: Thu Aug 27 12:40:58 EDT 2015

remove the type in return statements

The type is already in the optional expression,
so it is not needed and make 'y' more similar to
'j'.

--- a/cc1/code.c
+++ b/cc1/code.c
@@ -13,7 +13,7 @@
             emitexp(unsigned, void *),
             emitsymid(unsigned, void *), emittext(unsigned, void *),
             emitfun(unsigned, void *),
-            emitret(unsigned, void *), emitdcl(unsigned, void *);
+            emitdcl(unsigned, void *);
 
 char *optxt[] = {
 	[OADD] = "+",
@@ -58,9 +58,10 @@
 	[OCASE] = "\tv\tL%d",
 	[OJUMP] = "\tj\tL%d\n",
 	[OBRANCH] = "\tj\tL%d",
-	[OEFUN] = "}",
-	[OELOOP] = "\tb",
-	[OBLOOP] = "\td",
+	[OEFUN] = "}\n",
+	[OELOOP] = "\tb\n",
+	[OBLOOP] = "\td\n",
+	[ORET] = "\ty",
 	[OPAR] = "p",
 	[OCALL] = "c",
 	[OFIELD] = "."
@@ -118,7 +119,7 @@
 	[OELOOP] = emittext,
 	[OBLOOP] = emittext,
 	[OFUN] = emitfun,
-	[ORET] = emitret,
+	[ORET] = emittext,
 	[ODECL] = emitdcl,
 	[OSWITCH] = emitswitch,
 	[OSWITCHT] = emitswitcht,
@@ -347,18 +348,9 @@
 }
 
 static void
-emitret(unsigned op, void *arg)
-{
-	Type *tp = arg;
-
-	fputs("\ty", stdout);
-	emitletter(tp);
-}
-
-static void
 emittext(unsigned op, void *arg)
 {
-	puts(optxt[op]);
+	fputs(optxt[op], stdout);
 }
 
 static void
--- a/cc1/ir.md
+++ b/cc1/ir.md
@@ -246,7 +246,7 @@
 > }
 
 Another form of jump is the return statement, which uses the
-letter 'y' with a return type and an optional expression.
+letter 'y' with an optional expression.
 For example:
 
 > int
@@ -261,7 +261,7 @@
 > G1	F1	main
 > {
 > -
-> 	yI	#I10
+> 	y	#I10
 > }
 
 
--- a/cc1/stmt.c
+++ b/cc1/stmt.c
@@ -143,7 +143,7 @@
 		else if ((np = convert(np, tp, 0)) == NULL)
 			error("incorrect type in return");
 	}
-	emit(ORET, tp);
+	emit(ORET, NULL);
 	emit(OEXPR, np);
 }
 
--- a/cc1/tests/test001.c
+++ b/cc1/tests/test001.c
@@ -9,7 +9,7 @@
 {
 -
 	X1	"68656C6C6F20776F726C640A	'P	pP	cI
-	yI	#I0
+	y	#I0
 }
 */
 
--- a/cc1/tests/test003.c
+++ b/cc1/tests/test003.c
@@ -6,17 +6,17 @@
 G1	F1	foo
 {
 -
-	yI	#I2A
+	y	#I2A
 }
 G2	F1	bar
 {
 -
-	yI	#I18
+	y	#I18
 }
 G3	F1	main
 {
 -
-	yI	G1	cI
+	y	G1	cI
 }
 */
 
--- a/cc1/tests/test004.c
+++ b/cc1/tests/test004.c
@@ -23,9 +23,9 @@
 	A2	A2	A2	#I1	>I	#I1	#I0	?I	+I	:I
 	A2	A2	A2	#I4	<I	#I1	#I0	?I	+I	:I
 	j	L3	A2	#I4	=I
-	yI	#I1
+	y	#I1
 L3
-	yI	#I0
+	y	#I0
 }
 */
 
--- a/cc1/tests/test005.c
+++ b/cc1/tests/test005.c
@@ -13,9 +13,9 @@
 	A2	A2	~I	:I
 	A2	A2	_I	:I
 	j	L3	A2	#I2	=I
-	yI	#I1
+	y	#I1
 L3
-	yI	#I0
+	y	#I0
 }
 */
 
--- a/cc1/tests/test006.c
+++ b/cc1/tests/test006.c
@@ -11,7 +11,7 @@
 {
 -
 	j	L2	#I0
-	yI	#I1
+	y	#I1
 	j	L3
 L2
 	j	L4	#I0
@@ -19,18 +19,18 @@
 L4
 	j	L6	#I1
 	j	L7	G1	MI	#I0	=I
-	yI	#I1
+	y	#I1
 	j	L8
 L7
-	yI	#I0
+	y	#I0
 L8
 	j	L9
 L6
-	yI	#I1
+	y	#I1
 L9
 L5
 L3
-	yI	#I1
+	y	#I1
 }
 */
 
--- a/cc1/tests/test007.c
+++ b/cc1/tests/test007.c
@@ -16,7 +16,7 @@
 	j	L3	A2	#I0	!I
 	b
 L4
-	yI	A2
+	y	A2
 }
 */
 
--- a/cc1/tests/test008.c
+++ b/cc1/tests/test008.c
@@ -20,7 +20,7 @@
 	j	L5	A2	#I14	<I
 	b
 L6
-	yI	A2	#I14	-I
+	y	A2	#I14	-I
 }
 */
 
--- a/cc1/tests/test009.c
+++ b/cc1/tests/test009.c
@@ -17,9 +17,9 @@
 	b
 L4
 	j	L6	A2	#IA	=I
-	yI	#I1
+	y	#I1
 L6
-	yI	#I0
+	y	#I0
 }
 */
 
--- a/cc1/tests/test010.c
+++ b/cc1/tests/test010.c
@@ -55,7 +55,7 @@
 	j	L14	#I1
 	b
 L15
-	yI	A2	#IF	-I
+	y	A2	#IF	-I
 }
 */
 
--- a/cc1/tests/test011.c
+++ b/cc1/tests/test011.c
@@ -10,13 +10,13 @@
 -
 L2
 	j	L3
-	yI	#I1
+	y	#I1
 L4
-	yI	#I0
+	y	#I0
 L3
 L5
 	j	L4
-	yI	#I1
+	y	#I1
 }
 */
 
--- a/cc1/tests/test012.c
+++ b/cc1/tests/test012.c
@@ -22,7 +22,7 @@
 L11
 	j	L12
 L13
-	yI	#I1
+	y	#I1
 	j	L9
 L10
 	t	#2
@@ -34,11 +34,11 @@
 	t	#1
 	v	L8	#I0
 L6
-	yI	#I2
+	y	#I2
 L12
 	s	L15	A2
 L16
-	yI	#I3
+	y	#I3
 	j	L14
 L15
 	t	#1
@@ -48,7 +48,7 @@
 	A2	#I2	:I
 L19
 L20
-	yI	#I4
+	y	#I4
 	j	L17
 L18
 	t	#1
@@ -56,11 +56,11 @@
 L17
 	s	L22	A2
 L23
-	yI	A2
+	y	A2
 L24
-	yI	#I1
+	y	#I1
 L25
-	yI	#I1
+	y	#I1
 	j	L21
 L22
 	t	#3
--- a/cc1/tests/test014.c
+++ b/cc1/tests/test014.c
@@ -29,7 +29,7 @@
 R4	W	j
 X5	I	k
 T6	Z	a
-	yI	#I0
+	y	#I0
 }
 F2	I
 G6	F2	func2
--- a/cc1/tests/test015.c
+++ b/cc1/tests/test015.c
@@ -24,8 +24,8 @@
 	j	L2
 A3	S2	s
 A4	I	s
-	yI	A4
-	yI	A3	M11	.S5	M6	.I	A3	M11	.S5	M10	.S8	M9	.I	+I
+	y	A4
+	y	A3	M11	.S5	M6	.I	A3	M11	.S5	M10	.S8	M9	.I	+I
 L2
 ????
 */
--- a/cc1/tests/test016.c
+++ b/cc1/tests/test016.c
@@ -16,14 +16,14 @@
 	A4	A2	'P	:P
 	A4	@I	#I0	:I
 	j	L5	A2	#I0	=I
-	yI	#I1
+	y	#I1
 L5
 	A4	G1	'P	:P
 	A4	@I	#I0	:I
 	j	L6	A4	#I0	IP	!I
-	yI	#I1
+	y	#I1
 L6
-	yI	#I0
+	y	#I0
 }
 G3	F1	func2
 {
@@ -38,7 +38,7 @@
 	A4	@P	@I	#I0	:I
 L5
 	A2	#I0	IP	:P
-	yI	A1
+	y	A1
 }
 ????
 */
--- a/cc1/tests/test017.c
+++ b/cc1/tests/test017.c
@@ -21,12 +21,12 @@
 	A3	M8	.P	@S2	M3	.I	#I1	:I
 	A3	M8	.P	@S2	M4	.I	#I2	:I
 	j	L4	A2	M3	.I	#I1	=I
-	yI	#I1
+	y	#I1
 L4
 	j	L5	A2	M4	.I	#I2	=I
-	yI	#I2
+	y	#I2
 L5
-	yI	#I0
+	y	#I0
 }
 */
 
--- a/cc1/tests/test018.c
+++ b/cc1/tests/test018.c
@@ -18,18 +18,18 @@
 	A4	'P	#P4	+P	#P3	+P	@M	#M2	:M
 	A10	'P	@I	#I2	:I
 	j	L12	A4	'P	#P4	+P	#P3	+P	@M	MI	#I2	=I
-	yI	#I1
+	y	#I1
 L12
 	j	L13	A6	#P4	+P	#P3	+P	@M	MI	#I2	=I
-	yI	#I1
+	y	#I1
 L13
 	j	L14	A8	@M	MI	#I2	=I
-	yI	#I1
+	y	#I1
 L14
 	j	L15	A10	@I	#I2	=I
-	yI	#I1
+	y	#I1
 L15
-	yI	#I0
+	y	#I0
 }
 */