shithub: scc

Download patch

ref: a993e8c13722106027d20e89369be1cc02753083
parent: 5bb717efd8b6fab5fa7bc324dce6b0a8e4261f86
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Sat Aug 15 07:03:12 EDT 2015

Remove comparision in constant conditions

This was a very idea because it is easier to detect
a zero or an one than a comparision

--- a/cc1/expr.c
+++ b/cc1/expr.c
@@ -1161,7 +1161,7 @@
 	expect('(');
 	np = exp2cond(expr(), 0);
 	if (np->constant)
-		np = node(ONE, inttype, np, constnode(zero));
+		warn("conditional expression is constant");
 	expect(')');
 
 	return np;
--- a/cc1/tests/test006.c
+++ b/cc1/tests/test006.c
@@ -2,19 +2,22 @@
 name: TEST006
 description: Basic test for if
 output:
+test006.c:42: warning: conditional expression is constant
+test006.c:44: warning: conditional expression is constant
+test006.c:47: warning: conditional expression is constant
 G1	M	c
 F1
 X2	F1	main
 G2	F1	main	{
 -
-	j	L2	#I0	#I0	=I
+	j	L2	#I0
 	yI	#I1
 	j	L3
 L2
-	j	L4	#I0	#I0	=I
+	j	L4	#I0
 	j	L5
 L4
-	j	L6	#I1	#I0	=I
+	j	L6	#I1
 	j	L7	G1	MI	#I0	=I
 	yI	#I1
 	j	L8
@@ -52,4 +55,3 @@
 	}
 	return 1;
 }
-