mirror of
https://github.com/golang/go
synced 2024-09-28 18:04:28 -06:00
cmd/compile: minor change to simplify addition of experimental CLs
Two different experimental CLs need this change, this makes them more focused and easier to apply or combine. Change-Id: Ic7b5536394af20d9038bf3cc0cf22891555c7fa9 Reviewed-on: https://go-review.googlesource.com/c/go/+/542775 Run-TryBot: David Chase <drchase@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
This commit is contained in:
parent
d411b3197c
commit
c5e812234c
@ -5298,11 +5298,11 @@ func (s *state) callAddr(n *ir.CallExpr, k callKind) *ssa.Value {
|
||||
// Returns the address of the return value (or nil if none).
|
||||
func (s *state) call(n *ir.CallExpr, k callKind, returnResultAddr bool, deferExtra ir.Expr) *ssa.Value {
|
||||
s.prevCall = nil
|
||||
var callee *ir.Name // target function (if static)
|
||||
var closure *ssa.Value // ptr to closure to run (if dynamic)
|
||||
var codeptr *ssa.Value // ptr to target code (if dynamic)
|
||||
var dextra *ssa.Value // defer extra arg
|
||||
var rcvr *ssa.Value // receiver to set
|
||||
var calleeLSym *obj.LSym // target function (if static)
|
||||
var closure *ssa.Value // ptr to closure to run (if dynamic)
|
||||
var codeptr *ssa.Value // ptr to target code (if dynamic)
|
||||
var dextra *ssa.Value // defer extra arg
|
||||
var rcvr *ssa.Value // receiver to set
|
||||
fn := n.Fun
|
||||
var ACArgs []*types.Type // AuxCall args
|
||||
var ACResults []*types.Type // AuxCall results
|
||||
@ -5318,7 +5318,7 @@ func (s *state) call(n *ir.CallExpr, k callKind, returnResultAddr bool, deferExt
|
||||
case ir.OCALLFUNC:
|
||||
if (k == callNormal || k == callTail) && fn.Op() == ir.ONAME && fn.(*ir.Name).Class == ir.PFUNC {
|
||||
fn := fn.(*ir.Name)
|
||||
callee = fn
|
||||
calleeLSym = callTargetLSym(fn)
|
||||
if buildcfg.Experiment.RegabiArgs {
|
||||
// This is a static call, so it may be
|
||||
// a direct call to a non-ABIInternal
|
||||
@ -5466,8 +5466,8 @@ func (s *state) call(n *ir.CallExpr, k callKind, returnResultAddr bool, deferExt
|
||||
// Note that the "receiver" parameter is nil because the actual receiver is the first input parameter.
|
||||
aux := ssa.InterfaceAuxCall(params)
|
||||
call = s.newValue1A(ssa.OpInterLECall, aux.LateExpansionResultType(), aux, codeptr)
|
||||
case callee != nil:
|
||||
aux := ssa.StaticAuxCall(callTargetLSym(callee), params)
|
||||
case calleeLSym != nil:
|
||||
aux := ssa.StaticAuxCall(calleeLSym, params)
|
||||
call = s.newValue0A(ssa.OpStaticLECall, aux.LateExpansionResultType(), aux)
|
||||
if k == callTail {
|
||||
call.Op = ssa.OpTailLECall
|
||||
|
Loading…
Reference in New Issue
Block a user