tinygo/transform/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
..
allocs.ll compiler, runtime: add layout parameter to runtime.alloc 2021-11-02 22:16:15 +01:00
allocs.out.ll transform: allocate the correct amount of bytes in an alloca 2021-12-10 10:48:24 +01:00
allocs2.go compiler: do not emit nil checks for loading closure variables 2021-05-26 20:21:08 +02:00
gc-stackslots.ll transform (MakeGCStackSlots): do not move the stack chain pop earlier 2022-06-10 17:25:02 +02:00
gc-stackslots.out.ll transform (MakeGCStackSlots): do not move the stack chain pop earlier 2022-06-10 17:25:02 +02:00
globals-function-sections.ll compiler: move ApplyFunctionSections to transform package 2020-03-19 19:56:08 +01:00
globals-function-sections.out.ll compiler: move ApplyFunctionSections to transform package 2020-03-19 19:56:08 +01:00
interface.ll all: refactor reflect package 2023-02-17 22:54:34 +01:00
interface.out.ll all: refactor reflect package 2023-02-17 22:54:34 +01:00
interrupt.ll compiler: remove parentHandle from calling convention 2022-01-19 14:42:02 -05:00
interrupt.out.ll compiler: remove parentHandle from calling convention 2022-01-19 14:42:02 -05:00
maps.ll all: move OptimizeMaps to transforms and add tests 2019-09-15 21:26:27 +02:00
maps.out.ll all: drop support for LLVM 10 2021-10-31 10:44:17 +01:00
panic.ll compiler: move ReplacePanicsWithTrap pass to transforms 2019-11-16 18:41:28 +01:00
panic.out.ll compiler: move ReplacePanicsWithTrap pass to transforms 2019-11-16 18:41:28 +01:00
reflect-implements.ll all: refactor reflect package 2023-02-17 22:54:34 +01:00
reflect-implements.out.ll all: refactor reflect package 2023-02-17 22:54:34 +01:00
reflect.go transform: split interface and reflect lowering 2021-05-03 20:10:49 +02:00
stacksize.ll arm: automatically determine stack sizes 2020-08-27 19:23:22 +02:00
stacksize.out.ll all: add support for ThinLTO 2022-03-12 12:55:38 +01:00
stringequal.ll compiler: remove parentHandle from calling convention 2022-01-19 14:42:02 -05:00
stringequal.out.ll compiler: remove parentHandle from calling convention 2022-01-19 14:42:02 -05:00
stringtobytes.ll compiler: move OptimizeStringToBytes to transform package 2019-09-22 08:25:50 +02:00
stringtobytes.out.ll compiler: move OptimizeStringToBytes to transform package 2019-09-22 08:25:50 +02:00
wasm-abi.ll compiler: move wasm ABI workaround to transform package 2020-01-28 19:29:09 +01:00
wasm-abi.out.ll all: drop support for LLVM 10 2021-10-31 10:44:17 +01:00