aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2024-10-26 00:48:33 +0700
committerShulhan <m.shulhan@gmail.com>2026-02-03 18:04:30 +0700
commit011e40da85bddf83fee0ded83cb9115b7a88b3d4 (patch)
tree355cc352e66fc64ce94f17658c31e699aa798bb1 /src/cmd/compile
parent85232e51b20971e0d211b25fa3aa412bc7987404 (diff)
downloadgo-011e40da85bddf83fee0ded83cb9115b7a88b3d4.tar.xz
all: prealloc slice with possible minimum capabilities
Diffstat (limited to 'src/cmd/compile')
-rw-r--r--src/cmd/compile/internal/ssa/loopbce.go2
-rw-r--r--src/cmd/compile/internal/ssa/regalloc.go10
-rw-r--r--src/cmd/compile/internal/ssa/schedule.go2
-rw-r--r--src/cmd/compile/internal/ssagen/ssa.go2
-rw-r--r--src/cmd/compile/internal/test/ssa_test.go2
5 files changed, 9 insertions, 9 deletions
diff --git a/src/cmd/compile/internal/ssa/loopbce.go b/src/cmd/compile/internal/ssa/loopbce.go
index aa6cc48cac..1aa987e5b6 100644
--- a/src/cmd/compile/internal/ssa/loopbce.go
+++ b/src/cmd/compile/internal/ssa/loopbce.go
@@ -84,7 +84,7 @@ func parseIndVar(ind *Value) (min, inc, nxt *Value, loopReturn Edge) {
//
// exit_loop:
func findIndVar(f *Func) []indVar {
- var iv []indVar
+ iv := make([]indVar, 0, len(f.Blocks))
sdom := f.Sdom()
for _, b := range f.Blocks {
diff --git a/src/cmd/compile/internal/ssa/regalloc.go b/src/cmd/compile/internal/ssa/regalloc.go
index a0257f3064..d51d41ed30 100644
--- a/src/cmd/compile/internal/ssa/regalloc.go
+++ b/src/cmd/compile/internal/ssa/regalloc.go
@@ -1000,10 +1000,10 @@ var tmpVal Value
func (s *regAllocState) regalloc(f *Func) {
regValLiveSet := f.newSparseSet(f.NumValues()) // set of values that may be live in register
defer f.retSparseSet(regValLiveSet)
- var oldSched []*Value
- var phis []*Value
- var phiRegs []register
- var args []*Value
+ oldSched := make([]*Value, 0, len(s.visitOrder))
+ phis := make([]*Value, 0, len(s.visitOrder))
+ phiRegs := make([]register, 0, len(s.visitOrder))
+ args := make([]*Value, 0, len(s.visitOrder))
// Data structure used for computing desired registers.
var desired desiredState
@@ -2298,7 +2298,7 @@ func (s *regAllocState) placeSpills() {
}
// Insert spill instructions into the block schedules.
- var oldSched []*Value
+ oldSched := make([]*Value, 0, len(s.visitOrder))
for _, b := range s.visitOrder {
nfirst := 0
for _, v := range b.Values {
diff --git a/src/cmd/compile/internal/ssa/schedule.go b/src/cmd/compile/internal/ssa/schedule.go
index 8006253145..a459eb4328 100644
--- a/src/cmd/compile/internal/ssa/schedule.go
+++ b/src/cmd/compile/internal/ssa/schedule.go
@@ -460,7 +460,7 @@ func storeOrder(values []*Value, sset *sparseSet, storeNumber []int32) []*Value
}
w = w.MemoryArg()
}
- var stack []*Value
+ stack := make([]*Value, 0, len(values))
for _, v := range values {
if sset.contains(v.ID) {
// in sset means v is a store, or already pushed to stack, or already assigned a store number
diff --git a/src/cmd/compile/internal/ssagen/ssa.go b/src/cmd/compile/internal/ssagen/ssa.go
index 17feb90df7..cb0508350f 100644
--- a/src/cmd/compile/internal/ssagen/ssa.go
+++ b/src/cmd/compile/internal/ssagen/ssa.go
@@ -937,7 +937,7 @@ func dumpSourcesColumn(writer *ssa.HTMLWriter, fn *ir.Func) {
}
// Read sources of inlined functions.
- var inlFns []*ssa.FuncLines
+ inlFns := make([]*ssa.FuncLines, 0, len(ssaDumpInlined))
for _, fi := range ssaDumpInlined {
elno := fi.Endlineno
fname := base.Ctxt.PosTable.Pos(fi.Pos()).Filename()
diff --git a/src/cmd/compile/internal/test/ssa_test.go b/src/cmd/compile/internal/test/ssa_test.go
index 7d213fceca..c4bd28e6e6 100644
--- a/src/cmd/compile/internal/test/ssa_test.go
+++ b/src/cmd/compile/internal/test/ssa_test.go
@@ -76,7 +76,6 @@ func TestCode(t *testing.T) {
tmpdir := t.TempDir()
// Find all the test functions (and the files containing them).
- var srcs []string // files containing Test functions
type test struct {
name string // TestFoo
usesFloat bool // might use float operations
@@ -86,6 +85,7 @@ func TestCode(t *testing.T) {
if err != nil {
t.Fatalf("can't read testdata directory: %v", err)
}
+ srcs := make([]string, 0, len(files)) // files containing Test functions
for _, f := range files {
if !strings.HasSuffix(f.Name(), "_test.go") {
continue