Something went wrong. Try again.
🌱 A minimal programming language and compiler. git.urbach.dev/cli/q
high-performance programming-language compiler
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031package core
import "git.urbach.dev/cli/q/src/ssa"
// copy creates a copy of a value and appends it to the current block.func (f *Function) copy(value ssa.Value, source ssa.Source, read bool) ssa.Value { structValue, isStruct := value.(*ssa.Struct)
if isStruct { c := &ssa.Struct{ Typ: structValue.Typ, Arguments: make(ssa.Arguments, len(structValue.Arguments)), }
for i, field := range structValue.Arguments { c.Arguments[i] = f.copy(field, source, read) }
return c }
c := &ssa.Copy{ Value: value, Typ: value.Type(), Source: source, Read: read, }
f.Block().Append(c) return c}