]> Cypherpunks.ru repositories - gostls13.git/blobdiff - src/cmd/compile/internal/inline/inlheur/score_callresult_uses.go
cmd/compile/internal/inline/inlheur: enhance call result scoring
[gostls13.git] / src / cmd / compile / internal / inline / inlheur / score_callresult_uses.go
index b83bc4fd2027c294197c009b0da71ba797141a42..d13e1c3286f62eeb852c155cdf5384835e789105 100644 (file)
@@ -267,10 +267,8 @@ func (rua *resultUseAnalyzer) callTargetCheckResults(call ir.Node) {
                                rua.fn.Sym().Name, rname)
                }
                if cs := rua.returnHasProp(rname, ResultIsConcreteTypeConvertedToInterface); cs != nil {
-                       // FIXME: add cond level support here
-                       adj := passConcreteToItfCallAdj
-                       cs.Score, cs.ScoreMask = adjustScore(adj, cs.Score, cs.ScoreMask)
-                       adj = callResultRescoreAdj
+
+                       adj := returnFeedsConcreteToInterfaceCallAdj
                        cs.Score, cs.ScoreMask = adjustScore(adj, cs.Score, cs.ScoreMask)
                }
        case ir.OCALLFUNC:
@@ -285,17 +283,12 @@ func (rua *resultUseAnalyzer) callTargetCheckResults(call ir.Node) {
                        }
                }
                if cs := rua.returnHasProp(rname, ResultAlwaysSameInlinableFunc); cs != nil {
-                       // FIXME: add cond level support here
-                       adj := passInlinableFuncToIndCallAdj
-                       cs.Score, cs.ScoreMask = adjustScore(adj, cs.Score, cs.ScoreMask)
-                       adj = callResultRescoreAdj
+                       adj := returnFeedsInlinableFuncToIndCallAdj
                        cs.Score, cs.ScoreMask = adjustScore(adj, cs.Score, cs.ScoreMask)
                } else if cs := rua.returnHasProp(rname, ResultAlwaysSameFunc); cs != nil {
-                       // FIXME: add cond level support here
-                       adj := passFuncToIndCallAdj
-                       cs.Score, cs.ScoreMask = adjustScore(adj, cs.Score, cs.ScoreMask)
-                       adj = callResultRescoreAdj
+                       adj := returnFeedsFuncToIndCallAdj
                        cs.Score, cs.ScoreMask = adjustScore(adj, cs.Score, cs.ScoreMask)
+
                }
        }
 }
@@ -351,10 +344,7 @@ func (rua *resultUseAnalyzer) foldCheckResults(cond ir.Node) {
        if !ShouldFoldIfNameConstant(cond, namesUsed) {
                return
        }
-       // FIXME: add cond level support here
-       adj := passConstToIfAdj
-       cs.Score, cs.ScoreMask = adjustScore(adj, cs.Score, cs.ScoreMask)
-       adj = callResultRescoreAdj
+       adj := returnFeedsConstToIfAdj
        cs.Score, cs.ScoreMask = adjustScore(adj, cs.Score, cs.ScoreMask)
 }
 
@@ -386,10 +376,10 @@ func (rua *resultUseAnalyzer) returnHasProp(name *ir.Name, prop ResultPropBits)
 
 func (rua *resultUseAnalyzer) getCallResultName(ce *ir.CallExpr) *ir.Name {
        var callTarg ir.Node
-       if sel, ok := ce.X.(*ir.SelectorExpr); ok {
+       if sel, ok := ce.Fun.(*ir.SelectorExpr); ok {
                // method call
                callTarg = sel.X
-       } else if ctarg, ok := ce.X.(*ir.Name); ok {
+       } else if ctarg, ok := ce.Fun.(*ir.Name); ok {
                // regular call
                callTarg = ctarg
        } else {