// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package ssa import "cmd/compile/internal/logopt" // checkbce prints all bounds checks that are present in the function. // Useful to find regressions. checkbce is only activated when with // corresponding debug options, so it's off by default. // See test/checkbce.go func checkbce(f *Func) { if f.pass.debug <= 0 && !logopt.Enabled() { return } for _, b := range f.Blocks { if b.Kind == BlockInvalid { continue } for _, v := range b.Values { if v.Op == OpIsInBounds || v.Op == OpIsSliceInBounds { if f.pass.debug > 0 { f.Warnl(v.Pos, "Found %v", v.Op) } if logopt.Enabled() { if v.Op == OpIsInBounds { logopt.LogOpt(v.Pos, "isInBounds", "checkbce", f.Name) } if v.Op == OpIsSliceInBounds { logopt.LogOpt(v.Pos, "isSliceInBounds", "checkbce", f.Name) } } } } } }