Andrew Kelley bfded492f0 stage2: rewire the frontend driver to whole-file-zir
* Remove some unused imports in AstGen.zig. I think it would make sense
   to start decoupling AstGen from the rest of the compiler code,
   similar to how the tokenizer and parser are decoupled.
 * AstGen: For decls, move the block_inline instructions to the top of
   the function so that they get lower ZIR instruction indexes. With
   this, the block_inline instruction index combined with its corresponding
   break_inline instruction index can be used to form a ZIR instruction
   range. This is useful for allocating an array to map ZIR instructions
   to semantically analyzed instructions.

 * Module: extract emit-h functionality into a struct, and only allocate
   it when emit-h is activated.
 * Module: remove the `decl_table` field. This previously was a table of
   all Decls in the entire Module. A "name hash" strategy was used to
   find decls within a given namespace, using this global table. Now,
   each Namespace has its own map of name to children Decls.
   - Additionally, there were 3 places that relied on iterating over
     decl_table in order to function:
     - C backend and SPIR-V backend. These now have their own decl_table
       that they keep populated when `updateDecl` and `removeDecl` are
       called.
     - emit-h. A `decl_table` field has been added to the new GlobalEmitH
       struct which is only allocated when emit-h is activated.
 * Module: fix ZIR serialization/deserialization bug in debug mode having
   to do with the secret safety tag for untagged unions. There is still an
   open TODO to investigate a friendlier solution to this problem with
   the language.
 * Module: improve deserialization of ZIR to allocate only exactly as
   much capacity as length in the instructions array so as to not waste
   space.
 * Module: move `srcHashEql` to `std.zig` to live next to the definition
   of `SrcHash` itself.
 * Module: re-introduce the logic for scanning top level declarations
   within a namespace.

 * Compilation: add an `analyze_pkg` Job which is used to kick off the
   start of semantic analysis by doing the equivalent of
   `_ = @import("std");`. The `analyze_pkg` job is unconditionally added
   to the work queue on every update(), with pkg set to the std lib pkg.

 * Rename TZIR to AIR in a few places. A more comprehensive rename will
   come later.
2021-04-26 20:41:07 -07:00
..
2021-04-25 00:02:58 -07:00
2021-04-04 17:04:46 -07:00
2021-04-04 19:27:47 -04:00
2021-02-25 22:20:30 +02:00
2021-03-18 14:05:01 -07:00
2021-02-28 14:03:19 +01:00
2021-04-20 16:19:59 -04:00
2020-12-31 15:45:24 -08:00
2020-12-31 15:45:24 -08:00
2021-01-07 23:48:58 -08:00
2020-12-31 15:45:24 -08:00
2021-03-28 14:32:34 +02:00
2021-03-18 14:05:01 -07:00
2020-12-31 15:45:24 -08:00
2020-12-31 15:45:24 -08:00
2020-12-31 15:45:24 -08:00
2021-04-22 23:52:52 -07:00
2020-12-31 15:45:24 -08:00
2021-04-22 22:42:46 -04:00
2021-04-20 17:57:35 -07:00
2020-12-31 15:45:24 -08:00
2020-12-31 15:45:24 -08:00
2021-02-24 21:29:23 -07:00
2021-02-28 14:03:19 +01:00
2020-12-31 15:45:24 -08:00