tinygo/compiler
Ayke van Laethem 7b6ef65fe7 compiler: create temporary allocas with appropriate lifetimes
Make sure all allocas are created in the entry block and are given the
right lifetimes. This is good for code quality:

  * Moving allocas to the entry block makes sure they are always
    allocated statically (avoiding the need for a frame pointer) and do
    not grow the stack on each new alloca instruction. This is
    especially useful in loops where it could otherwise lead to a stack
    overflow even though there is no recursion.
  * Adding lifetime markers allows LLVM to reuse stack areas for
    different allocas as long as their lifetimes do not overlap.

All in all, this reduces code size in all tested cases for the BBC
micro:bit, and reduces code size for most cases for WebAssembly.
2019-05-20 09:52:42 +02:00
..
asserts.go compiler: avoid some obviously false nil checks 2019-05-18 18:30:22 +02:00
calls.go compiler: add debug info for function arguments 2019-05-14 11:18:38 +02:00
channel.go compiler: create temporary allocas with appropriate lifetimes 2019-05-20 09:52:42 +02:00
compiler.go compiler: create temporary allocas with appropriate lifetimes 2019-05-20 09:52:42 +02:00
defer.go compiler: mark all GEPs as inbounds 2019-04-26 09:17:52 +02:00
errors.go all: improve compiler error handling 2019-04-26 08:52:10 +02:00
func-lowering.go compiler: lower func values to switch + direct call 2019-04-17 23:12:59 +02:00
func.go compiler: refactor packing of word-sized values in integers 2019-05-01 12:12:30 +02:00
goroutine-lowering.go compiler: allow larger-than-int values to be sent across a channel 2019-05-05 16:46:50 +02:00
inlineasm.go compiler: refactor parseExpr 2019-04-26 08:52:10 +02:00
interface-lowering.go compiler: avoid bitcast when replacing a method call with a direct call 2019-05-01 12:12:30 +02:00
interface.go compiler: simplify some interface code 2019-05-14 09:59:00 +02:00
llvm.go compiler: create temporary allocas with appropriate lifetimes 2019-05-20 09:52:42 +02:00
map.go compiler: create temporary allocas with appropriate lifetimes 2019-05-20 09:52:42 +02:00
optimizer.go cgo: do not allow capturing of external/exported functions 2019-05-05 20:56:35 +02:00
reflect.go reflect: add limited support for all type kinds 2019-02-05 17:11:09 +01:00
sizes.go compiler: allow larger-than-int values to be sent across a channel 2019-05-05 16:46:50 +02:00
syscall.go compiler: refactor parseExpr 2019-04-26 08:52:10 +02:00
volatile.go compiler: implement volatile operations as compiler builtins 2019-05-14 12:24:01 +02:00
wordpack.go compiler: create temporary allocas with appropriate lifetimes 2019-05-20 09:52:42 +02:00