shithub: scc

Download patch

ref: 53e36437d86d46131b359596f1e62ff9f3166a0b
parent: 1f93655144cbf4a81858966ea37b38a792a16aa5
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Sun Aug 10 19:29:39 EDT 2014

Add shift operators to cc2

--- a/cc2/cc2.h
+++ b/cc2/cc2.h
@@ -71,6 +71,8 @@
 #define OINC      ';'
 #define OMOD      '%'
 #define ODIV      '/'
+#define OSHL      'l'
+#define OSHR      'r'
 
 extern void error(unsigned nerror, ...);
 extern void genaddable(Node *list[]);
--- a/cc2/cgen.c
+++ b/cc2/cgen.c
@@ -126,6 +126,7 @@
 	switch (np->op) {
 	case OINC:
 	case OADD: case OASSIG: case OMOD: case ODIV:
+	case OSHL: case OSHR:
 		break;
 	default:
 		abort();
@@ -192,6 +193,7 @@
 		break;
 	case OINC:
 	case OASSIG: case OADD: case OSUB: case OMOD: case ODIV:
+	case OSHL:   case OSHR:
 		xaddable(lp);
 		xaddable(rp);
 		break;
--- a/cc2/parser.c
+++ b/cc2/parser.c
@@ -250,6 +250,8 @@
 	['*'] = operator,
 	['/'] = operator,
 	[':'] = operator,
+	['l'] = operator,
+	['r'] = operator,
 	[';'] = increment,
 	['A'] = variable,
 	['T'] = variable,
--