func fakePC(n ir.Node) ir.Node { … } // The result of walkCompare MUST be assigned back to n, e.g. // // n.Left = walkCompare(n.Left, init) func walkCompare(n *ir.BinaryExpr, init *ir.Nodes) ir.Node { … } func walkCompareInterface(n *ir.BinaryExpr, init *ir.Nodes) ir.Node { … } func walkCompareString(n *ir.BinaryExpr, init *ir.Nodes) ir.Node { … } // The result of finishCompare MUST be assigned back to n, e.g. // // n.Left = finishCompare(n.Left, x, r, init) func finishCompare(n *ir.BinaryExpr, r ir.Node, init *ir.Nodes) ir.Node { … } // brcom returns !(op). // For example, brcom(==) is !=. func brcom(op ir.Op) ir.Op { … } // brrev returns reverse(op). // For example, Brrev(<) is >. func brrev(op ir.Op) ir.Op { … } func tracecmpArg(n ir.Node, t *types.Type, init *ir.Nodes) ir.Node { … }