tinygo/transform
Ayke van Laethem 19dec048b0 compiler: do not check for impossible type asserts
Previously there was code to avoid impossible type asserts but it wasn't
great and in fact was too aggressive when combined with reflection.

This commit improves this by checking all types that exist in the
program that may appear in an interface (even struct fields and the
like) but without creating runtime.typecodeID objects with the type
assert. This has two advantages:

  * As mentioned, it optimizes impossible type asserts away.
  * It allows methods on types that were only asserted on (in
    runtime.typeAssert) but never used in an interface to be optimized
    away using GlobalDCE. This may have a cascading effect so that other
    parts of the code can be further optimized.

This sometimes massively improves code size and mostly negates the code
size regression of the previous commit.
2021-03-23 14:32:33 +01:00
..
testdata compiler: do not check for impossible type asserts 2021-03-23 14:32:33 +01:00
allocs.go fix incorrect starting value for optimized allocations in a loop 2019-11-13 16:45:09 +01:00
allocs_test.go all: refactor heap-to-stack transform into the transform package 2019-09-15 21:26:27 +02:00
coroutines.go transform: show better error message in coroutines lowering 2021-03-05 14:42:43 +01:00
errors.go refactor coroutine lowering and tasks 2020-03-17 12:16:10 +01:00
func-lowering.go arm: automatically determine stack sizes 2020-08-27 19:23:22 +02:00
func-lowering_test.go compiler: refactor func lowering to the transform package 2019-12-04 22:19:49 +01:00
gc.go support WASI target (#1373) 2020-09-29 21:58:03 +02:00
gc_test.go compiler: move GC passes to the transform package 2019-11-25 09:14:31 +01:00
globals.go avr: properly support the .rodata section 2020-10-31 21:06:26 +01:00
globals_test.go avr: properly support the .rodata section 2020-10-31 21:06:26 +01:00
goroutine_test.go refactor coroutine lowering and tasks 2020-03-17 12:16:10 +01:00
interface-lowering.go compiler: do not check for impossible type asserts 2021-03-23 14:32:33 +01:00
interface-lowering_test.go transform: replace panics with source locations 2020-03-24 15:07:55 +01:00
interrupt.go runtime/fe310: add support for PLIC interrupts 2020-01-27 19:58:39 +01:00
interrupt_test.go all: add compiler support for interrupts 2020-01-20 21:19:12 +01:00
llvm.go runtime/fe310: add support for PLIC interrupts 2020-01-27 19:58:39 +01:00
maps.go all: move OptimizeMaps to transforms and add tests 2019-09-15 21:26:27 +02:00
maps_test.go all: move OptimizeMaps to transforms and add tests 2019-09-15 21:26:27 +02:00
optimizer.go transform: optimize string comparisons against "" 2021-03-18 17:22:00 +01:00
panic.go compiler: move ReplacePanicsWithTrap pass to transforms 2019-11-16 18:41:28 +01:00
panic_test.go compiler: move ReplacePanicsWithTrap pass to transforms 2019-11-16 18:41:28 +01:00
reflect.go transform: make reflection sidetables constant globals 2019-12-21 22:59:23 +01:00
rtcalls.go transform: optimize string comparisons against "" 2021-03-18 17:22:00 +01:00
rtcalls_test.go transform: optimize string comparisons against "" 2021-03-18 17:22:00 +01:00
stacksize.go arm: automatically determine stack sizes 2020-08-27 19:23:22 +02:00
stacksize_test.go arm: automatically determine stack sizes 2020-08-27 19:23:22 +02:00
transform.go all: refactor heap-to-stack transform into the transform package 2019-09-15 21:26:27 +02:00
transform_test.go main: add initial support for (in-development) LLVM 11 2020-10-13 20:23:50 +02:00
util.go compiler: move OptimizeStringToBytes to transform package 2019-09-22 08:25:50 +02:00
wasm-abi.go transform: wasm-abi: create temporary allocas in the entry block 2020-01-28 19:29:09 +01:00
wasm-abi_test.go compiler: move wasm ABI workaround to transform package 2020-01-28 19:29:09 +01:00