From: Russ Cox Date: Thu, 7 Oct 2010 08:42:26 +0000 (-0400) Subject: gc: elide dead code X-Git-Tag: weekly.2010-10-13~52 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=410927d1adeadbe8de72769bd794064f0cd801cd;p=gostls13.git gc: elide dead code R=ken2 CC=golang-dev https://golang.org/cl/2365044 --- diff --git a/src/cmd/gc/gen.c b/src/cmd/gc/gen.c index d2396aa09f..a8b2e1b8ed 100644 --- a/src/cmd/gc/gen.c +++ b/src/cmd/gc/gen.c @@ -257,6 +257,17 @@ gen(Node *n) 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: