Commit ce4fc94
committed
cmd/compile: use inline tree index to identify call stack
When building the name for closures, in order to make sure each
closure has a unique name, we attach a hash of the inline call
stack. We currently use a combination of function name, line
number, and column number at each level to construct the hash. In
some situations, this may not be able to uniquely identify the
call stack: there could be multiple inline call sites at the same
line of different files (we currently don't include the file name),
and XPos.ColumnNumber can saturate. This could lead to duplicate
symbol definitions. Instead of using name + line number + column
number, switch to use the global inline tree index, which should
uniquely identify the call site at each level.
Fixes golang#79274.
Change-Id: I69110a212d6b856283aae4c999258ae585be5977
Reviewed-on: https://go-review.googlesource.com/c/go/+/775624
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: David Chase <drchase@google.com>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>1 parent 55ff407 commit ce4fc94
5 files changed
Lines changed: 48 additions & 3 deletions
File tree
- src/cmd/compile/internal/ir
- test/fixedbugs
- issue79274a.dir
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
13 | 13 | | |
14 | 14 | | |
15 | 15 | | |
16 | | - | |
17 | 16 | | |
18 | 17 | | |
19 | 18 | | |
| |||
472 | 471 | | |
473 | 472 | | |
474 | 473 | | |
475 | | - | |
| 474 | + | |
476 | 475 | | |
477 | | - | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
478 | 479 | | |
479 | 480 | | |
480 | 481 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
0 commit comments