]> Cypherpunks.ru repositories - gostls13.git/commit
cmd/compile/internal/inline/inlheur: enhance call result scoring
authorThan McIntosh <thanm@google.com>
Fri, 15 Sep 2023 19:06:06 +0000 (15:06 -0400)
committerThan McIntosh <thanm@google.com>
Tue, 7 Nov 2023 21:13:01 +0000 (21:13 +0000)
commit9e90a15ba4f6ad7d3a61ecf81bf00abb386fbe0d
tree06495429cc3c46ee743d30be9a9ad2ba93f763db
parentf56c29331951c9d1a48f5b7627f4bb98e7eeb80f
cmd/compile/internal/inline/inlheur: enhance call result scoring

This patch makes a small enhancement to call result scoring, to make
it more independent of param value heuristics. For this pair of
functions:

  func caller() {
     v := callee(10)         <<-- this callsite
     if v > 101 {
        ...
     }
  }
  func callee(x int) {
     if x < 0 {
       G = 1
     }
     return 9
  }

The score for the specified call site above would be adjusted only
once, for the "pass constant to parameter that feeds 'if' statement"
heuristic, which didn't reflect the fact that doing the inline enables
not one but two specific deadcode opportunities (first for the code
inside the inlined routine body, then for the "if" downstream of the
inlined call).

This patch changes the call result scoring machinery to use a separate
set of mask bits, so that we can more accurately handle the case
above.

Change-Id: I700166d0c990c037215b9f904e9984886986c600
Reviewed-on: https://go-review.googlesource.com/c/go/+/529117
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/cmd/compile/internal/inline/inlheur/score_callresult_uses.go
src/cmd/compile/internal/inline/inlheur/scoreadjusttyp_string.go
src/cmd/compile/internal/inline/inlheur/scoring.go
src/cmd/compile/internal/inline/inlheur/testdata/props/returns2.go