break;
case OIF:
+ if(n->ntest == N || n->ntest->op == OLITERAL) {
+ // drop dead code in if true or if false.
+ // the linker will do it for us in general,
+ // but this avoids writnig to the object file
+ // in a very common case.
+ if(n->ntest == N || n->ntest->val.u.bval)
+ genlist(n->nbody);
+ else
+ genlist(n->nelse);
+ break;
+ }
p1 = gjmp(P); // goto test
p2 = gjmp(P); // p2: goto else
patch(p1, pc); // test: