From 139448fe95402d1b7ff0fa08c459a07de95ddbe4 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Mon, 18 Feb 2013 13:24:04 -0500 Subject: [PATCH] cmd/6c, cmd/8c: cut stack frames by about half The routine that adds an automatic to the stack was adding ptrsize-1 to the size before rounding up. That addition would only make sense to turn a round down into a round up. Before a round up, it just wastes a word. The effect was that a 6c function with one local and one two-word function call used (8+8)+(16+8) = 40 bytes instead of 8+16 = 24 bytes. The wasted space mostly didn't matter, but one place where it does matter is when trying to stay within the 128-byte total frame constraint for #pragma textflag 7 functions. This only affects the C compilers, not the Go compilers. 5c already had correct code, which is now copied to 6c and 8c. R=ken2 CC=golang-dev https://golang.org/cl/7303099 --- src/cmd/6c/swt.c | 4 ++-- src/cmd/8c/swt.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cmd/6c/swt.c b/src/cmd/6c/swt.c index 2c5b3e604c..53b12d9941 100644 --- a/src/cmd/6c/swt.c +++ b/src/cmd/6c/swt.c @@ -626,8 +626,8 @@ align(int32 i, Type *t, int op, int32 *maxalign) int32 maxround(int32 max, int32 v) { - v += SZ_VLONG-1; + v = xround(v, SZ_LONG); if(v > max) - max = xround(v, SZ_VLONG); + return v; return max; } diff --git a/src/cmd/8c/swt.c b/src/cmd/8c/swt.c index 18611ea1e8..dc68b60354 100644 --- a/src/cmd/8c/swt.c +++ b/src/cmd/8c/swt.c @@ -632,8 +632,8 @@ align(int32 i, Type *t, int op, int32 *maxalign) int32 maxround(int32 max, int32 v) { - v += SZ_LONG-1; + v = xround(v, SZ_LONG); if(v > max) - max = xround(v, SZ_LONG); + return v; return max; } -- 2.48.1