From: Austin Clements Date: Fri, 30 Jan 2015 16:18:24 +0000 (-0500) Subject: cmd/9g: note suboptimal copy code X-Git-Tag: go1.5beta1~2182 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=36f879780aa086356187a7ca8a625ff37484d317;p=gostls13.git cmd/9g: note suboptimal copy code 9g generates needlessly complex code for small copies. There are a few other things that need to be improved about the copy code, so for now just note the problem. Change-Id: I0f1de4b2f9197a2635e27cc4b91ecf7a6c11f457 Reviewed-on: https://go-review.googlesource.com/3665 Reviewed-by: Russ Cox --- diff --git a/src/cmd/9g/cgen.c b/src/cmd/9g/cgen.c index d1f1976ce8..2d76133543 100644 --- a/src/cmd/9g/cgen.c +++ b/src/cmd/9g/cgen.c @@ -1506,6 +1506,11 @@ sgen(Node *n, Node *ns, int64 w) patch(gbranch(ABNE, T, 0), ploop); regfree(&nend); } else { + // TODO(austin): Instead of generating ADD $-8,R8; ADD + // $-8,R7; n*(MOVDU 8(R8),R9; MOVDU R9,8(R7);) just + // generate the offsets directly and eliminate the + // ADDs. That will produce shorter, more + // pipeline-able code. while(c-- > 0) { p = gins(op, &src, &tmp); p->from.type = TYPE_MEM;