go/test/typeparam
Keith Randall 301f6c8019 cmd/compile: keep methods on generic types from being deadcode eliminated
We currently make dictionaries contain a relocation pointing to
methods that generic code might use, so that those methods are not
deadcode eliminated. However, with inlining we can end up not using
the dictionary, making the reference from the dictionary to the method
no longer keep the method alive.

Fix this by keeping the dictionary alive at generic interface call sites.
It's a bit of overkill, as we only need to keep the dictionary statically
alive. We don't actually need it dynamically alive, which is what KeepAlive
does. But it works. It ends up generating a LEAQ + stack spill that aren't
necessary, but that's pretty low overhead.

To make this work, I needed to stop generating methods on shape types.
We should do this anyway, as we shouldn't ever need them. But currently
we do use them! issue44688.go has a test that only works because it calls
a method on a shape type. I've disabled that test for now, will work on it
in a subsequent CL.

Fixes #48047

Change-Id: I78968868d6486c1745f51b8b43be0898931432a2
Reviewed-on: https://go-review.googlesource.com/c/go/+/349169
Trust: Keith Randall <khr@golang.org>
Trust: Dan Scales <danscales@google.com>
Run-TryBot: Keith Randall <khr@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Dan Scales <danscales@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
2021-09-27 20:42:34 +00:00
..
absdiffimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
aliasimp.dir cmd/compile/internal/types2: disallow aliases for generic types 2021-08-31 16:43:46 +00:00
chansimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
dedup.dir [dev.typeparams] cmd/compile: put shape types in their own package 2021-08-04 17:56:00 +00:00
factimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue46461b.dir test: add compiler regress tests for #46461 2021-09-09 19:37:25 +00:00
issue47514c.dir cmd/compile: fix reference to generic type needed by crawler 2021-08-26 20:18:58 +00:00
issue47775.dir cmd/compile: always remove receiver type from instantiated method values 2021-08-23 19:27:46 +00:00
issue47892.dir test: add test cases for issue47892. 2021-08-29 14:10:21 +00:00
issue47892b.dir test: add test cases for issue47892. 2021-08-29 14:10:21 +00:00
issue48094.dir cmd/compile: builtins may be in the unsafe package 2021-08-31 17:21:38 +00:00
issue48094b.dir cmd/compile: fix unified IR panic when expanding nested inline function 2021-09-09 04:37:47 +00:00
issue48185a.dir cmd/compile: fix deadlock in (*Named).load 2021-09-07 17:38:14 +00:00
issue48185b.dir cmd/compile: make sure imported instantiated types have their methods created 2021-09-07 20:37:05 +00:00
issue48280.dir cmd/compile: prevent importReader reading type parameter twice 2021-09-14 02:52:21 +00:00
issue48306.dir cmd/compile: prevent typecheck importer reading type parameter twice 2021-09-14 02:53:17 +00:00
issue48337a.dir cmd/compile: fix generic type handling in crawler 2021-09-17 19:50:04 +00:00
issue48337b.dir cmd/compile: set IsShape based on type being in the Shapes pkg 2021-09-14 23:07:15 +00:00
issue48454.dir cmd/compile: fix crawler for unexported fields with instantiated types 2021-09-24 18:21:14 +00:00
issue48462.dir cmd/compile: fix export/import of range loop. 2021-09-20 00:13:47 +00:00
listimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
listimp2.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
mapimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
mapsimp.dir [dev.typeparams] Don't check typecheck(3) on transform, so no need to export/import it 2021-05-24 22:17:33 +00:00
mdempsky [dev.typeparams] cmd/compile: fixing case where type arg is an interface 2021-08-05 17:33:41 +00:00
mincheck.dir [dev.typeparams] cmd/compile/internal/types2: implement type sets with term lists 2021-08-05 19:36:47 +00:00
minimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
mutualimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
orderedmapsimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
pairimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
setsimp.dir [dev.typeparams] cmd/compile: always generate (*T).M wrappers for instantiated methods 2021-05-26 21:39:54 +00:00
sliceimp.dir test/typeparam/sliceimp.dir: fix typo in a.go 2021-08-30 01:55:58 +00:00
stringerimp.dir [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
valimp.dir [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
absdiff.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
absdiffimp.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00
adder.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
aliasimp.go [dev.typeparams] cmd/compile: get type aliases working with generic types 2021-05-26 21:38:54 +00:00
append.go cmd/compile: disable type list syntax for the compiler 2021-09-02 01:06:17 +00:00
boundmethod.go [dev.typeparams] cmd/compile: handle meth expressions on typeparams 2021-07-29 21:58:06 +00:00
builtins.go [dev.typeparams] cmd/compile/internal/types2: fix make with type parameter argument 2021-08-06 20:34:46 +00:00
chans.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
chansimp.go [dev.typeparams] cmd/compile: fixing import of comm clauses/closures in generic functions 2021-05-21 23:13:46 +00:00
combine.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
cons.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
dedup.go [dev.typeparams] cmd/compile: put shape types in their own package 2021-08-04 17:56:00 +00:00
dedup.out [dev.typeparams] cmd/compile: put shape types in their own package 2021-08-04 17:56:00 +00:00
dictionaryCapture-noinline.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
dictionaryCapture.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
dottype.go [dev.typeparams] cmd/compile: implement generic .(T) operations 2021-07-29 17:15:21 +00:00
dottype.out [dev.typeparams] cmd/compile: implement generic .(T) operations 2021-07-29 17:15:21 +00:00
double.go cmd/compile: disable type list syntax for the compiler 2021-09-02 01:06:17 +00:00
eface.go cmd/compile: fix stenciling of conversions between interfaces 2021-08-27 16:41:29 +00:00
equal.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
fact.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
factimp.go [dev.typeparams] cmd/compile: export OFUNCINST and OSELRECV2 nodes (for generic functions) 2021-05-21 17:03:30 +00:00
graph.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
ifaceconv.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
importtest.go [dev.typeparams] cmd/compile: use existing findpkg algorithm when importing through types2 2020-11-11 01:11:43 +00:00
index.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
interfacearg.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue39755.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue44688.go cmd/compile: keep methods on generic types from being deadcode eliminated 2021-09-27 20:42:34 +00:00
issue45547.go [dev.typeparams] test: rename blank functions 2021-07-28 21:41:07 +00:00
issue45722.go cmd/compile: fix handling of ir.CurFunc during stenciling 2021-04-27 16:55:20 +00:00
issue45738.go cmd/compile: fix nongeneric closures in generic functions 2021-04-27 19:30:11 +00:00
issue45817.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue46461.go test: add compiler regress tests for #46461 2021-09-09 19:37:25 +00:00
issue46461b.go test: add compiler regress tests for #46461 2021-09-09 19:37:25 +00:00
issue46472.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue46591.go test/typeparam: add a test case for issue46591 2021-08-20 21:00:08 +00:00
issue47258.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
issue47272.go cmd/compile: fix CONVIFACE case converting interface to empty interface 2021-08-17 13:23:13 +00:00
issue47272.out cmd/compile: fix CONVIFACE case converting interface to empty interface 2021-08-17 13:23:13 +00:00
issue47514.go [dev.typeparams] cmd/compile: make sure closures inside generic funcs are not compiled 2021-08-06 18:50:46 +00:00
issue47514b.go [dev.typeparams] cmd/compile: call transformArgs before early typecheckaste in noder 2021-08-09 19:43:09 +00:00
issue47514c.go cmd/compile: fix reference to generic type needed by crawler 2021-08-26 20:18:58 +00:00
issue47676.go cmd/compile: fix handling of Defn field during stenciling 2021-08-31 19:07:50 +00:00
issue47684.go cmd/compile: fix dictionaries for nested closures 2021-08-16 16:55:27 +00:00
issue47684b.go cmd/compile: fix dictionaries for nested closures 2021-08-16 16:55:27 +00:00
issue47684c.go cmd/compile: fix dictionaries for nested closures 2021-08-16 16:55:27 +00:00
issue47708.go cmd/compile: fix conversions from TypeParam to interface 2021-09-01 16:45:26 +00:00
issue47710.go cmd/compile: delay fillinMethods to deal with mutually-recursive types 2021-08-27 01:42:38 +00:00
issue47713.go cmd/compile: fix naming of types inside instantiations 2021-08-24 18:30:13 +00:00
issue47713.out cmd/compile: fix naming of types inside instantiations 2021-08-24 18:30:13 +00:00
issue47716.go cmd/compile: fixes for non-constant Sizeof/Alignof/Offsetof 2021-08-23 22:55:34 +00:00
issue47723.go cmd/compile: copy captured dictionary var to local var 2021-08-23 17:51:41 +00:00
issue47740.go cmd/compile: only use dictionaries for conversions to type parameters 2021-08-18 22:34:31 +00:00
issue47740.out cmd/compile: only use dictionaries for conversions to type parameters 2021-08-18 22:34:31 +00:00
issue47740b.go cmd/compile: only use dictionaries for conversions to type parameters 2021-08-18 22:34:31 +00:00
issue47775.go cmd/compile: always remove receiver type from instantiated method values 2021-08-23 19:27:46 +00:00
issue47775b.go cmd/compile: always remove receiver type from instantiated method values 2021-08-23 19:27:46 +00:00
issue47797.go cmd/compile: fix wrong instantiated type for embedded receiver 2021-09-09 03:31:51 +00:00
issue47877.go cmd/compile: fix naming of types inside instantiations 2021-08-24 18:30:13 +00:00
issue47878.go cmd/compile: fix stencil call expression. 2021-08-25 16:37:31 +00:00
issue47892.go test: add test cases for issue47892. 2021-08-29 14:10:21 +00:00
issue47892b.go test: add test cases for issue47892. 2021-08-29 14:10:21 +00:00
issue47896.go cmd/compile: reuse same node for global dictionaries 2021-08-24 00:01:29 +00:00
issue47901.go cmd/compile: fix CheckSize() calculation for -G=3 and stencils 2021-08-25 15:30:19 +00:00
issue47924.go cmd/compile: mark ODYNAMICDOTTYPE as an expression that can panic 2021-08-24 18:31:34 +00:00
issue47925.go cmd/compile: fix stenciling of conversions between interfaces 2021-08-27 16:41:29 +00:00
issue47925b.go cmd/compile: fix stenciling of conversions between interfaces 2021-08-27 16:41:29 +00:00
issue47925c.go cmd/compile: fix stenciling of conversions between interfaces 2021-08-27 16:41:29 +00:00
issue47925d.go cmd/compile: fix stenciling of conversions between interfaces 2021-08-27 16:41:29 +00:00
issue47929.go cmd/compile: fix CheckSize() calculation for -G=3 and stencils 2021-08-25 15:30:19 +00:00
issue47948.go cmd/compile: fix function contains no TParam in generic function 2021-08-25 19:06:16 +00:00
issue47966.go cmd/compile: support type C comparable 2021-08-28 16:00:51 +00:00
issue48013.go cmd/compile: fix missing case for shape double-check function 2021-09-01 02:51:18 +00:00
issue48016.go cmd/compile: fix handling of Defn field during stenciling 2021-08-31 19:07:50 +00:00
issue48030.go cmd/compile: fix bug with Inferred targs 2021-08-30 21:22:35 +00:00
issue48042.go cmd/compile: fix delay transformation in *subster.node() 2021-09-06 14:02:24 +00:00
issue48047.go cmd/compile: keep methods on generic types from being deadcode eliminated 2021-09-27 20:42:34 +00:00
issue48049.go cmd/compile: add CONVIFACE nodes needed in generic code due to assignments 2021-09-07 23:27:08 +00:00
issue48056.go cmd/compile: fix error when revcType is ptr in selectorExpr 2021-08-30 17:13:00 +00:00
issue48094.go cmd/compile: builtins may be in the unsafe package 2021-08-31 17:21:38 +00:00
issue48094b.go test/typeparam: fix issue48094b test build 2021-09-09 09:06:46 +00:00
issue48137.go cmd/compile: delay transformAssign if lhs/rhs have typeparam 2021-09-17 23:04:15 +00:00
issue48185a.go cmd/compile: fix deadlock in (*Named).load 2021-09-07 17:38:14 +00:00
issue48185b.go cmd/compile: make sure imported instantiated types have their methods created 2021-09-07 20:37:05 +00:00
issue48191.go cmd/compile: remove now-unneeded SetHasTParam() for cached ptr element 2021-09-07 22:23:36 +00:00
issue48198.go cmd/compile: make sure that the names created for instantiated type are the same 2021-09-07 03:56:13 +00:00
issue48225.go cmd/compile: fix implement for closure in a global assignment 2021-09-09 21:28:56 +00:00
issue48253.go cmd/compile: fix wrong instantiated type for embedded receiver 2021-09-09 03:31:51 +00:00
issue48276a.go cmd/compile: stenciled conversions might be NOPs 2021-09-09 15:34:08 +00:00
issue48276a.out cmd/compile: stenciled conversions might be NOPs 2021-09-09 15:34:08 +00:00
issue48276b.go cmd/compile: stenciled conversions might be NOPs 2021-09-09 15:34:08 +00:00
issue48280.go cmd/compile: prevent importReader reading type parameter twice 2021-09-14 02:52:21 +00:00
issue48306.go cmd/compile: prevent typecheck importer reading type parameter twice 2021-09-14 02:53:17 +00:00
issue48317.go cmd/compile: save the note of fields when translating struct 2021-09-13 21:48:41 +00:00
issue48318.go encoding/xml: truncate generic type names 2021-09-21 17:25:35 +00:00
issue48337a.go cmd/compile: fix generic type handling in crawler 2021-09-17 19:50:04 +00:00
issue48337a.out cmd/compile: fix generic type handling in crawler 2021-09-17 19:50:04 +00:00
issue48337b.go cmd/compile: set IsShape based on type being in the Shapes pkg 2021-09-14 23:07:15 +00:00
issue48344.go go/test: add a test for issue 48344 2021-09-20 16:26:11 +00:00
issue48453.go cmd/compile: fix transform.AssignOp to deal with tricky case 2021-09-20 17:44:56 +00:00
issue48454.go cmd/compile: fix crawler for unexported fields with instantiated types 2021-09-24 18:21:14 +00:00
issue48462.go cmd/compile: fix export/import of range loop. 2021-09-20 00:13:47 +00:00
issue48598.go cmd/compile: add required CONVIFACE nodes when translating OFUNCINST node 2021-09-25 17:06:17 +00:00
issue48602.go cmd/compile: deal with blank nodes with typeparam type during stenciling 2021-09-25 01:24:46 +00:00
issue48604.go cmd/compile: fix stencil call expression 2021-09-27 05:10:56 +00:00
issue48609.go cmd/compile: fix delayTransform condition 2021-09-24 19:40:03 +00:00
issue48617.go test/typeparam: add a test case for issue48617 2021-09-25 17:12:41 +00:00
list.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
list2.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
listimp.go [dev.typeparams] cmd/compile: move to new export version, keep reading previous version 2021-05-21 04:03:26 +00:00
listimp2.go [dev.typeparams] cmd/compile: Fix handling of Name nodes during stenciling 2021-05-24 22:16:09 +00:00
lockable.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
map.go [dev.typeparams] cmd/compile: small fixes for stenciling 2021-02-11 21:46:39 +00:00
mapimp.go [dev.typeparams] cmd/compile: add import/export of calls to builtin functions 2021-05-21 17:14:19 +00:00
maps.go cmd/compile: add support for generic maps 2021-03-15 20:28:34 +00:00
mapsimp.go [dev.typeparams] Don't check typecheck(3) on transform, so no need to export/import it 2021-05-24 22:17:33 +00:00
metrics.go cmd/compile: fix case where func-valued field of a generic type is called 2021-03-15 20:29:11 +00:00
min.go [dev.typeparams] test: update all the typeparam tests to use the new union/tilde syntax 2021-06-03 16:05:22 +00:00
mincheck.go [dev.typeparams] cmd/compile: adding union support in types1 2021-05-26 15:33:02 +00:00
minimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
mutualimp.go [dev.typeparams] cmd/compile: create .dict Param in the package of the instantiated function 2021-06-07 19:34:39 +00:00
nested.go [dev.typeparams] test: add expected failure mechanism 2021-07-07 11:12:13 +00:00
nested.out [dev.typeparams] cmd/compile/internal/types2: support local defined types 2021-06-16 21:38:50 +00:00
ordered.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
orderedmap.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
orderedmapsimp.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00
pair.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
pairimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
pragma.go cmd/compile: propagate pragmas from generic function to stenciled implementation 2021-04-15 00:29:05 +00:00
sets.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
setsimp.go [dev.typeparams] cmd/compile: always generate (*T).M wrappers for instantiated methods 2021-05-26 21:39:54 +00:00
settable.go cmd/compile: disable type list syntax for the compiler 2021-09-02 01:06:17 +00:00
shape1.go [dev.typeparams] cmd/compile: make all pointer types have the same shape 2021-07-31 17:03:07 +00:00
shape1.out [dev.typeparams] cmd/compile: make all pointer types have the same shape 2021-07-31 17:03:07 +00:00
sliceimp.go [dev.typeparams] cmd/compile: fix handling of Nname field in (*subster).tstruct. 2021-05-21 23:25:07 +00:00
slices.go all: fix typos 2021-08-17 13:54:10 +00:00
smallest.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
smoketest.go cmd/compile: enable -G=3 by default 2021-08-21 00:24:02 +00:00
stringable.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
stringer.go [dev.typeparams] cmd/compile: small fixes for stenciling 2021-02-11 21:46:39 +00:00
stringerimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
struct.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
subdict.go cmd/compile: support type C comparable 2021-08-28 16:00:51 +00:00
sum.go [dev.typeparams] test/typeparam: gofmt -w 2021-07-28 21:40:40 +00:00
tparam1.go cmd/compile, go/types: allow any anywhere (as a type) 2021-09-22 19:19:49 +00:00
typelist.go cmd/compile: disable type list syntax for the compiler 2021-09-02 01:06:17 +00:00
typeswitch1.go [dev.typeparams] cmd/compile: implement generic type switches 2021-08-09 18:41:45 +00:00
typeswitch1.out [dev.typeparams] cmd/compile: implement generic type switches 2021-08-09 18:41:45 +00:00
typeswitch2.go cmd/compile: fix handling of Defn field during stenciling 2021-08-31 19:07:50 +00:00
typeswitch2.out [dev.typeparams] cmd/compile: implement generic type switches 2021-08-09 18:41:45 +00:00
typeswitch3.go [dev.typeparams] cmd/compile: implement generic type switches 2021-08-09 18:41:45 +00:00
typeswitch3.out [dev.typeparams] cmd/compile: implement generic type switches 2021-08-09 18:41:45 +00:00
typeswitch4.go [dev.typeparams] cmd/compile: implement generic type switches 2021-08-09 18:41:45 +00:00
typeswitch4.out [dev.typeparams] cmd/compile: implement generic type switches 2021-08-09 18:41:45 +00:00
typeswitch5.go [dev.typeparams] cmd/compile: implement generic type switches 2021-08-09 18:41:45 +00:00
typeswitch5.out [dev.typeparams] cmd/compile: implement generic type switches 2021-08-09 18:41:45 +00:00
typeswitch6.go [dev.typeparams] cmd/compile: handle interface type parameters in type switches 2021-08-10 01:56:50 +00:00
typeswitch6.out [dev.typeparams] cmd/compile: handle interface type parameters in type switches 2021-08-10 01:56:50 +00:00
typeswitch7.go [dev.typeparams] cmd/compile: handle interface type parameters in type switches 2021-08-10 01:56:50 +00:00
typeswitch7.out [dev.typeparams] cmd/compile: handle interface type parameters in type switches 2021-08-10 01:56:50 +00:00
valimp.go [dev.typeparams] cmd/compile: get export/import of generic types & functions working 2021-05-21 03:41:18 +00:00
value.go [dev.typeparams] cmd/compile: export/import of recursive generic types. 2021-06-04 16:43:27 +00:00