ref: 3ee77ddba4ad86c4f8d0357a90d5dd855e8c619e
parent: 2d6e3a3b4fd4aa72d7de54633f737c532405f1ae
author: Roberto E. Vargas Caballero <k0ga@shike2.com>
date: Thu Jun 23 12:20:52 EDT 2016
[cc2-qbe] Add support for OCPL and ONEG in sethi() This operators are implemented using another operators, so the best place for doing this operation is in sethi().
--- a/cc2/arch/qbe/cgen.c
+++ b/cc2/arch/qbe/cgen.c
@@ -59,7 +59,24 @@
case OCONST:
np->address = 11;
break;
+ case OCPL:
+ np->op = OAND;
+ rp = newnode(OCONST);
+ rp->type = np->type;
+ rp->u.i = 0;
+ rp->u.i = ~np->u.i;
+ goto binary;
+ case ONEG:
+ np->op = OSUB;
+ rp = lp;
+ lp = newnode(OCONST);
+ lp->type = np->type;
+ if (np->type.flags & INTF)
+ lp->u.i = 0;
+ else
+ lp->u.f = 0.0;
default:
+ binary:
lp = sethi(lp);
rp = sethi(rp);
break;