From: Dave Cheney Date: Sun, 4 Nov 2012 09:06:37 +0000 (+1100) Subject: cmd/5g: improve shift code generation X-Git-Tag: go1.1rc2~1965 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=d8008a9eef07e235358f0f7ca94a729aad4aa3b1;p=gostls13.git cmd/5g: improve shift code generation This CL is a backport of 6012049 which improves code generation for shift operations. benchmark old ns/op new ns/op delta BenchmarkLSL 9 5 -49.67% BenchmarkLSR 9 4 -50.00% R=golang-dev, minux.ma, r, rsc CC=golang-dev https://golang.org/cl/6813045 --- diff --git a/src/cmd/5g/ggen.c b/src/cmd/5g/ggen.c index a60f414943..8566f935df 100644 --- a/src/cmd/5g/ggen.c +++ b/src/cmd/5g/ggen.c @@ -407,7 +407,9 @@ cgen_asop(Node *n) hard: n2.op = 0; n1.op = 0; - if(nr->ullman >= nl->ullman || nl->addable) { + if(nr->op == OLITERAL) { + // don't allocate a register for literals. + } else if(nr->ullman >= nl->ullman || nl->addable) { regalloc(&n2, nr->type, N); cgen(nr, &n2); nr = &n2;