blob: 8b6cb8d1a5878fe618cb508bfb022ac63b0a471c [file]
// errorcheck -0 -d=ssa/mem2reg/debug=4
// 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.
// Test for variables accessed through pointers that can
// be promoted to register by the mem2reg pass.
package main
// The following functions are ported from src/cmd/compile/internal/ssa/mem2reg_test.go.
// Single-block mem2reg test
func justReturn0() int {
var x, y, z int // ERROR "promoted x in single block case" "promoted y in single block case" "promoted z in single block case"
xp := &x
yp := &y
zp := &z
*xp = 0
*yp = 1
*zp = 2
*yp = 3
*zp = 4
*yp = 5
valX1 := *xp
*zp = valX1 - 1
*xp = 1
*yp = 2
*xp = 3
*yp = 4
*xp = 5
valZ1 := *zp
*yp = valZ1 + 1
*zp = 1
*xp = 2
*zp = 3
*xp = 4
*zp = 5
valY1 := *yp
return valY1
}