1// run 2 3// Copyright 2021 The Go Authors. All rights reserved. 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file. 6 7package main 8 9type patchlist struct { 10 head, tail uint32 11} 12 13type frag struct { 14 i uint32 15 out patchlist 16} 17 18//go:noinline 19//go:registerparams 20func patch(l patchlist, i uint32) { 21} 22 23//go:noinline 24//go:registerparams 25func badbad(f1, f2 frag) frag { 26 // concat of failure is failure 27 if f1.i == 0 || f2.i == 0 { // internal compiler error: 'badbad': incompatible OpArgIntReg [4]: v42 and v26 28 return frag{} 29 } 30 patch(f1.out, f2.i) 31 return frag{f1.i, f2.out} 32} 33 34func main() { 35 badbad(frag{i: 2}, frag{i: 3}) 36} 37