// expr models evaluating an expression n and flowing the result into // hole k. func (e *escape) expr(k hole, n ir.Node) { … } func (e *escape) exprSkipInit(k hole, n ir.Node) { … } // unsafeValue evaluates a uintptr-typed arithmetic expression looking // for conversions from an unsafe.Pointer. func (e *escape) unsafeValue(k hole, n ir.Node) { … } // discard evaluates an expression n for side-effects, but discards // its value. func (e *escape) discard(n ir.Node) { … } func (e *escape) discards(l ir.Nodes) { … } // spill allocates a new location associated with expression n, flows // its address to k, and returns a hole that flows values to it. It's // intended for use with most expressions that allocate storage. func (e *escape) spill(k hole, n ir.Node) hole { … }