// run

// Copyright 2014 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.

// Issue 8325: corrupted byte operations during optimization
// pass.

package main

const alphanum = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

func main() {
	var bytes = []byte{10, 20, 30, 40, 50}

	for i, b := range bytes {
		bytes[i] = alphanum[b%byte(len(alphanum))]
	}

	for _, b := range bytes {
		switch {
		case '0' <= b && b <= '9',
			'A' <= b && b <= 'Z':
		default:
			println("found a bad character", string(b))
			panic("BUG")
		}

	}
}
