// errorcheck -0 -d=ssa/prove/debug=1 //go:build amd64.v3 || arm64 // Copyright 2025 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. // FIXME(@Jorropo): this file exists because I havn't yet bothered to // make prove work on the pure go function call fallback. // My idea was to wait until CL 637936 is merged, then we can always emit // the PopCount SSA operation and translate them to pure function calls // in late-opt. package main import "math/bits" func onesCountsBounds(x uint64, ensureAllBranchesCouldHappen func() bool) int { z := bits.OnesCount64(x) if ensureAllBranchesCouldHappen() && z > 64 { // ERROR "Disproved Less64$" return 42 } if ensureAllBranchesCouldHappen() && z <= 64 { // ERROR "Proved Leq64$" return 4242 } if ensureAllBranchesCouldHappen() && z < 0 { // ERROR "Disproved Less64$" return 424242 } if ensureAllBranchesCouldHappen() && z >= 0 { // ERROR "Proved Leq64$" return 42424242 } return z } func main() { }