tinygo/compiler/testdata
Ayke van Laethem 4e8453167f all: refactor reflect package
This is a big commit that changes the way runtime type information is stored in
the binary. Instead of compressing it and storing it in a number of sidetables,
it is stored similar to how the Go compiler toolchain stores it (but still more
compactly).

This has a number of advantages:

  * It is much easier to add new features to reflect support. They can simply
    be added to these structs without requiring massive changes (especially in
    the reflect lowering pass).
  * It removes the reflect lowering pass, which was a large amount of hard to
    understand and debug code.
  * The reflect lowering pass also required merging all LLVM IR into one
    module, which is terrible for performance especially when compiling large
    amounts of code. See issue 2870 for details.
  * It is (probably!) easier to reason about for the compiler.

The downside is that it increases code size a bit, especially when reflect is
involved. I hope to fix some of that in later patches.
2023-02-17 22:54:34 +01:00
..
basic.go compiler: fix stack overflow when creating recursive pointer types 2022-12-22 17:45:05 +01:00
basic.ll wasm: avoid miscompile with ThinLTO 2023-01-18 08:24:42 +01:00
channel.go compiler: avoid zero-sized alloca in channel operations 2021-09-09 11:24:52 +02:00
channel.ll wasm: avoid miscompile with ThinLTO 2023-01-18 08:24:42 +01:00
defer-cortex-m-qemu.ll all: refactor reflect package 2023-02-17 22:54:34 +01:00
defer.go compiler: insert basic blocks at an appropriate location 2022-06-16 07:59:21 +02:00
float.go compiler: test float to int conversions and fix upper-bound calculation 2021-01-19 14:02:32 +01:00
float.ll wasm: avoid miscompile with ThinLTO 2023-01-18 08:24:42 +01:00
func.go compiler: add func tests 2021-04-12 12:07:42 +02:00
func.ll wasm: avoid miscompile with ThinLTO 2023-01-18 08:24:42 +01:00
gc.go transform: remove switched func lowering 2022-01-19 14:42:02 -05:00
gc.ll all: refactor reflect package 2023-02-17 22:54:34 +01:00
generics.go compiler: implement unsafe.Alignof and unsafe.Sizeof for generic code 2022-07-28 15:43:51 +02:00
generics.ll compiler: implement unsafe.Alignof and unsafe.Sizeof for generic code 2022-07-28 15:43:51 +02:00
go1.20.go compiler: add support for new unsafe slice/string functions 2023-01-17 08:38:54 +01:00
go1.20.ll wasm: avoid miscompile with ThinLTO 2023-01-18 08:24:42 +01:00
goroutine-cortex-m-qemu-tasks.ll all: refactor reflect package 2023-02-17 22:54:34 +01:00
goroutine-wasm-asyncify.ll all: refactor reflect package 2023-02-17 22:54:34 +01:00
goroutine.go compiler: add support for the go keyword on interface methods 2021-10-31 14:17:25 +01:00
interface.go compiler: simplify interface lowering 2021-10-31 14:17:25 +01:00
interface.ll all: refactor reflect package 2023-02-17 22:54:34 +01:00
pointer.go compiler: refactor and add tests 2021-01-15 14:43:43 +01:00
pointer.ll wasm: avoid miscompile with ThinLTO 2023-01-18 08:24:42 +01:00
pragma.go all: format code according to Go 1.19 rules 2022-08-04 12:18:32 +02:00
pragma.ll wasm: support ThinLTO 2023-01-25 18:43:00 +01:00
slice.go all: drop support for Go 1.16 and Go 1.17 2022-08-30 12:38:06 +02:00
slice.ll wasm: avoid miscompile with ThinLTO 2023-01-18 08:24:42 +01:00
string.go compiler: fix indices into strings and arrays 2021-11-13 11:04:24 +01:00
string.ll wasm: avoid miscompile with ThinLTO 2023-01-18 08:24:42 +01:00