}
if e.inMutualBatch(fn) {
- return e.addr(ir.AsNode(param.Nname))
+ if param.Nname == nil {
+ return e.discardHole()
+ }
+ return e.addr(param.Nname.(*ir.Name))
}
// Call to previously tagged function.
func ParamNames(ft *types.Type) []Node {
args := make([]Node, ft.NumParams())
for i, f := range ft.Params().FieldSlice() {
- args[i] = AsNode(f.Nname)
+ args[i] = f.Nname.(*Name)
}
return args
}
)
-func AsNode(n types.Object) Node {
- if n == nil {
- return nil
- }
- return n.(Node)
-}
-
var BlankNode *Name
func IsConst(n Node, ct constant.Kind) bool {
sym.Def = fn.Nname
fn.Pragma |= ir.Noinline // TODO(mdempsky): We need to emit this during the unified frontend instead, to allow inlining.
- np := ir.AsNode(fn.Type().Params().Field(0).Nname)
- nh := ir.AsNode(fn.Type().Params().Field(1).Nname)
+ np := fn.Type().Params().Field(0).Nname.(*ir.Name)
+ nh := fn.Type().Params().Field(1).Nname.(*ir.Name)
switch t.Kind() {
case types.TARRAY:
sym.Def = fn.Nname
fn.Pragma |= ir.Noinline // TODO(mdempsky): We need to emit this during the unified frontend instead, to allow inlining.
- np := ir.AsNode(fn.Type().Params().Field(0).Nname)
- nq := ir.AsNode(fn.Type().Params().Field(1).Nname)
- nr := ir.AsNode(fn.Type().Results().Field(0).Nname)
+ np := fn.Type().Params().Field(0).Nname.(*ir.Name)
+ nq := fn.Type().Params().Field(1).Nname.(*ir.Name)
+ nr := fn.Type().Results().Field(0).Nname.(*ir.Name)
// Label to jump to if an equality test fails.
neq := typecheck.AutoLabel(".neq")
}
func verifyParamResultOffset(t *testing.T, f *types.Field, r abi.ABIParamAssignment, which string, idx int) int {
- n := ir.AsNode(f.Nname).(*ir.Name)
+ n := f.Nname.(*ir.Name)
if n.FrameOffset() != int64(r.Offset()) {
t.Errorf("%s %d: got offset %d wanted %d t=%v",
which, idx, r.Offset(), n.Offset_, f.Type)
if s == nil || s.Def == nil {
base.Fatalf("LookupRuntime: can't find runtime.%s", name)
}
- return ir.AsNode(s.Def).(*ir.Name)
+ return s.Def.(*ir.Name)
}
// SubstArgTypes substitutes the given list of types for
if sym == nil {
base.Fatalf("LookupCoverage: can't find runtime/coverage.%s", name)
}
- return ir.AsNode(sym.Def).(*ir.Name)
+ return sym.Def.(*ir.Name)
}