zig/std
Andrew Kelley 0ea50b3157 ir: new pass iteration strategy
Before:
 * IR basic blocks are in arbitrary order
 * when doing an IR pass, when a block is encountered, code
   must look at all the instructions in the old basic block,
   determine what blocks are referenced, and queue up those
   old basic blocks first.
 * This had a bug (See #667)

Now:
 * IR basic blocks are required to be in an order that guarantees
   they will be referenced by a branch, before any instructions
   within are referenced.
   ir pass1 is updated to meet this constraint.
 * When doing an IR pass, we iterate over old basic blocks
   in the order they appear. Blocks which have not been
   referenced are discarded.
 * After the pass is complete, we must iterate again to look
   for old basic blocks which now point to incomplete new
   basic blocks, due to comptime code generation.
 * This last part can probably be optimized - most of the time
   we don't need to iterate over the basic block again.

closes #667
2018-01-02 21:08:12 -05:00
..
c port most of main.cpp to self hosted compiler 2017-12-23 00:57:56 -05:00
debug fix segfault when passing union enum with sub byte... 2017-12-24 04:11:58 -05:00
fmt ir: new pass iteration strategy 2018-01-02 21:08:12 -05:00
math ir: new pass iteration strategy 2018-01-02 21:08:12 -05:00
os move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
special move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
zlib c-to-zig: return statement 2017-09-01 03:16:35 -04:00
array_list.zig move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
base64.zig move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
buf_map.zig self-hosted: cleanup build looking for llvm-config 2017-12-12 16:03:20 -05:00
buf_set.zig implement std.os.ChildProcess for windows 2017-10-14 15:32:18 -04:00
buffer.zig move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
build.zig self-hosted: build against zig_llvm and embedded LLD 2017-12-26 19:44:08 -05:00
cstr.zig self-hosted: build against zig_llvm and embedded LLD 2017-12-26 19:44:08 -05:00
dwarf.zig better stack traces for ELF x86_64 2017-04-24 12:14:45 -04:00
elf.zig add labeled loops, labeled break, labeled continue. remove goto 2017-12-20 23:00:19 -05:00
empty.zig recognize ar program and pass --gc-sections to ld 2016-05-11 14:44:10 -07:00
endian.zig explicitly return from blocks 2017-12-22 00:50:30 -05:00
hash_map.zig move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
heap.zig move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
index.zig move utf8 parsing to std 2017-12-26 23:17:33 -07:00
io.zig move utf8 parsing to std 2017-12-26 23:17:33 -07:00
io_test.zig disable broken 32 bit windows test 2017-11-10 17:08:11 -05:00
linked_list.zig move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
mem.zig move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
net.zig move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
rand.zig move std/debug.zig to a subdirectory 2017-12-23 22:15:48 -05:00
rand_test.zig std: add tests for mt32 and mt64 2016-07-28 20:14:57 -07:00
sort.zig explicitly return from blocks 2017-12-22 00:50:30 -05:00
unicode.zig move utf8 parsing to std 2017-12-26 23:17:33 -07:00