commit - 1b0ac8039426ded10ad6f8a7b1beba4203476ebc
commit + a18a324ce279aa59ddd5e92c2e30fdc140ee6018
blob - 7f0cf11f6f27af699a78aca32a3398efbe4cbae4
blob + 260a9c39dc958f824125ad2d0a45d984e03b84a6
--- cc/irc/irc.c
+++ cc/irc/irc.c
};
enum ir_type {
+ IR_NOP,
IR_LET, // .let
IR_WRITE, // .write
IR_RET, // .ri
if (tk != TK_IDENT)
goto err;
- if (strcmp (lval.s, "let") == 0) {
+ if (strcmp (lval.s, "nop") == 0) {
+ ir->type = IR_NOP;
+ expect (';');
+ return 0;
+ } else if (strcmp (lval.s, "let") == 0) {
ir->type = IR_LET;
expect (TK_REG);
ir->let.dest = lval.i;
{
printf ("%d: ", ir->line);
switch (ir->type) {
+ case IR_NOP:
+ puts ("nop;");
+ break;
case IR_LET:
printf ("let $%d: ", ir->let.dest);
print_dt (&ir->let.dt);
print_ir (ir);
switch (ir->type) {
+ case IR_NOP:
+ puts ("\tnop");
+ break;
case IR_LET:
r = &fn->regs[ir->let.dest];
if (r->type != R_LOCAL)
blob - 87774e9d23d0c92f8e40e943e6769eaf186b85dd
blob + 1d6a10ae6bf33408ac50b80ade2bedfd35342862
--- cc/irc/test.ir
+++ cc/irc/test.ir
let $5: word = fgt $0, $1;
let $6: word = fle $0, $1;
let $7: word = fge $0, $1;
+ nop;
ret 0;
}