tinygo/compiler
Ayke van Laethem 79ba6a50c3 compiler: insert basic blocks at an appropriate location
For example, this commit moves the 'throw' branch of an assertion (nil
check, slice index check, etc) to the end of the function while
inserting the "continue" branch right after the insert location. This
makes the resulting IR easier to follow.

For some reason, this also reduces code size a bit on average. The
TinyGo smoke tests saw a reduction of 0.22%, mainly from WebAssembly.
The drivers repo saw little average change in code size (-0.01%).

This commit also adds a few compiler tests for the defer keyword.
2022-06-16 07:59:21 +02:00
..
ircheck Fix incorrect formatting arguments 2022-04-10 22:58:16 +02:00
llvmutil builder: free LLVM objects after use 2022-05-30 07:53:28 +02:00
testdata compiler: insert basic blocks at an appropriate location 2022-06-16 07:59:21 +02:00
alias.go compiler: fix basic block context 2022-06-16 07:59:21 +02:00
asserts.go compiler: insert basic blocks at an appropriate location 2022-06-16 07:59:21 +02:00
atomic.go all: remove support for LLVM 11 and LLVM 12 2022-05-07 17:15:35 +02:00
calls.go compiler: remove parentHandle from calling convention 2022-01-19 14:42:02 -05:00
channel.go compiler: avoid zero-sized alloca in channel operations 2021-09-09 11:24:52 +02:00
compiler.go compiler: add support for type parameters (aka generics) 2022-06-11 20:41:16 +02:00
compiler_go118.go compiler: add support for type parameters (aka generics) 2022-06-11 20:41:16 +02:00
compiler_test.go compiler: insert basic blocks at an appropriate location 2022-06-16 07:59:21 +02:00
defer.go compiler: insert basic blocks at an appropriate location 2022-06-16 07:59:21 +02:00
errors.go all: fix staticcheck warnings 2021-09-27 15:47:12 +02:00
func.go compiler: remove parentHandle from calling convention 2022-01-19 14:42:02 -05:00
gc.go compiler: track the result of string concatenation 2020-04-02 14:04:25 +02:00
goroutine.go compiler: remove parentHandle from calling convention 2022-01-19 14:42:02 -05:00
inlineasm.go compiler: remove support for memory references in AsmFull 2022-04-21 15:18:18 +02:00
interface.go compiler: insert basic blocks at an appropriate location 2022-06-16 07:59:21 +02:00
interrupt.go transform: refactor interrupt lowering 2021-11-06 09:40:15 +01:00
intrinsics.go compiler: move LLVM math builtin support into the compiler 2021-08-10 20:08:27 +02:00
llvm.go compiler: insert basic blocks at an appropriate location 2022-06-16 07:59:21 +02:00
map.go src/runtime: first darft of map growth code 2022-04-28 09:14:45 +02:00
sizes.go compiler: alignof(func) is 1 pointer, not 2 2022-05-25 11:01:00 +02:00
symbol.go compiler: add support for type parameters (aka generics) 2022-06-11 20:41:16 +02:00
syscall.go all: switch to LLVM 13 2022-01-09 11:04:10 +01:00
volatile.go compiler: do not perform nil checking when indexing slices 2020-03-27 07:38:16 +01:00